Abbrechen eines Latenten Versprechen in jQuery
Wie kann ich das rückgängig machen ein Versprechen, ohne zu entfernen das element aus dem DOM?
Lief ich diesen code:
$("#box")
.delay(2000)
.show("slow")
.delay(2000)
.promise()
.then(function(){log("Done");});
Nach diesem, gibt es eine Möglichkeit zu stornieren, die Versprechen? Beide clearQueue()
und stop(true)
hat nicht funktioniert, weil es nicht eine animation, die ich versuche zu stornieren. Ich sah, dass remove()
sollte es tun ... aber ich will nur zu stoppen, die Versprechen, die Sie nicht entfernen Sie das gesamte element.
Wenn Sie nur das promise-Objekt (und kein Zugriff auf die ursprünglichen latenten), dann sollte es unmöglich sein, das zu tun. Die Idee, ein Versprechen ist in der Lage zu hören, um die latente aufgelöst wird, oder ablehnen, ohne die resolve/ablehnen-Funktionalität. Was Sie tun können, ist schaffen ein Versprechen wrapper, der macht die ursprünglichen Versprechen functons, aber alle callbacks verknüpft mit einer wrapping-Funktion, die überwacht, zu einer Art fahne, um zu vermeiden Auslösung des Rückrufs, wenn die latente gekennzeichnet ist abgebrochen.
fast, dass Sie eigentlich nur möchten, erstellen Sie eine latente und manuell ablehnen oder auflösen, wie Sie sehen, passen.
fast, dass Sie eigentlich nur möchten, erstellen Sie eine latente und manuell ablehnen oder auflösen, wie Sie sehen, passen.
InformationsquelleAutor ripper234 | 2012-03-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gute Nachricht. Seit gestern können Sie Abbrechen, Ihre Versprechen.
Veröffentlichte ich die neue version von meinem kleinen plugin jquery-timing , bietet zwei Möglichkeiten unter vielen anderen genannt .wait() und .unwait().
Wenn Sie dann wollen, um die Registrierung des callback:
Diese statischen Versionen warten und unwait unterstützen auch eine optionale Gruppen-Namen, um nicht zu kündigen, keine hf, sondern nur einen bestimmten Satz.
Außer, dass Sie tun können viel mehr intelligente Sachen wie:
oder der gesamte code in einer Kette, ohne unwait option:
oder gleich noch kürzer mit der option zum Abbrechen der zwei Pausen:
Sieht nur die Dokumente, Beispiele und API-was passt am besten für Sie.
InformationsquelleAutor peter
Ich glaube, Sie verwenden können
$('#box').remove();
Aus der jQuery-Dokumentation hier: http://api.jquery.com/promise/
Ja, Sie entfernen das element aus dem dom scheint nicht ideal. War der einzige Weg, ich könnte es an die Arbeit. Viel Glück bei Ihrer Suche nach einer besseren Lösung.
InformationsquelleAutor Paul
Ich glaube nicht, dass Sie würde wollen, dass so etwas wie http://jsfiddle.net/2cq8M/ ? Ich bin mit zwei Versprechen (einfach zu handhaben, das am Ende der Reihe von Animationen, die anderen zu beheben oder ablehnen, je nach Bedarf).
Ein bisschen umständlich syntax ... ich hatte gehofft, für ein Weg, um tatsächlich Abbrechen, ein Versprechen ... könnte es nicht sein, ein Weg, der in der aktuellen Umsetzung.
InformationsquelleAutor JayC
Den Sie verwenden möchten eine latente in diesem Fall anstelle eines Versprechen, Sie können jedoch mit den Versprechen der animation zum beheben des latenten.
http://jsfiddle.net/LG9eZ/9/
Als eine Randnotiz, deferreds kann nur abgelehnt oder gelöst werden, wenn. Sind Sie einmal abgelehnt oder gelöst sind, können Sie nicht ändern Sie Ihren Zustand.
InformationsquelleAutor Patrick Lee Scott