Ich benutze dies seit Jahren, aber ich habe festgestellt, dass ich etwas sehr grundlegendes nicht verstehe. In jQuery können Sie einen Anruf wie folgt machen:Woher weiß jQuery, ob ein Callback an ein Ajax-Versprechen geknüpft wird?
$.post({url: url, success: callback})
und jQuery wird die Callback-Methode aufrufen, wenn der Post abgeschlossen ist.
Aber man kann es auch mit Versprechen Syntax wie folgt erreichen:
$.post(url).done(callback)
Die Sache, die mich ist verwirrend ist: die post
Methode funktioniert, ob es ein done
Rückruf angebracht, so wie es das macht weiß, es ist ein?
Mit anderen Worten, ich könnte es verstehen, wenn Sie dies tun musste:
1 var jqxhr = $.post(url)
2 jqxhr.done(callback)
3 jqxhr.execute()
Aber Linie 3 ist nicht erforderlich. Also wie ist die post
in der Lage, ohne explizite execute
Aufruf auszuführen, und rufen Sie noch die done
Rückruf, wenn es eine , die später angehängt bekommt?
Sie sagen also, dass dies funktioniert, weil der Post-Aufruf (Zeile 1) die Anfrage initiiert und sofort zurückkehrt. Dann ist Linie 2 auch sofort. Aber der eigentliche 'post' braucht etwas Zeit, so dass der' done'-Handler bei seiner Fertigstellung angehängt wird. Das macht Sinn. –
Aber was würde passieren, wenn Sie ein ähnliches Designmuster wünschen, außer dass die Sache, auf die Sie warten, eine asynchrone Last benötigt, aber auch schon bereit ist, und so gab es keine Verzögerung? –
AFAIK das kann nicht passieren - Sie können es versuchen, indem Sie Ihr eigenes Promise-Objekt erstellen, das sofort ohne Verzögerung aufgelöst wird. – ADyson