Lassen Sie uns sagen, dass ich ein Versprechen wie dieses:Was passiert, wenn ein Versprechen abgeschlossen ist, bevor es aufgerufen wird?
var promise = new Promise(function(resolve, reject) {
// Do some async thing
});
promise.then(function(response) {
// Then do some other stuff
});
Was passiert, wenn die Asynchron Versprechen abgeschlossen geschieht, bevor ich .then nennen? Normalerweise hätte ich nur lange Aufgaben in der Promise-Funktion, aber was, wenn es wirklich schnell einmal abgeschlossen wird?
"sofort" ist in diesem Fall ein bisschen irreführend oder bestenfalls nicht beschreibend genug. Es wird bald aufgerufen, aber immer noch asynchron aufgerufen. Alle '.then() 'Handler werden immer asynchron mit den Versprechungen der Promise-Spezifikation aufgerufen. Eine Codezeile direkt nach 'promise.then (...)' wird also ausgeführt, BEVOR die '.then()' --Handlerfunktion aufgerufen wird, auch wenn das Versprechen bereits gelöst ist. – jfriend00
Was jFriend sagt, aber mit der Maßgabe, dass jQuery verspricht, sind nicht Standard. Eine der wichtigsten Kritikpunkte an jQuery ist, dass eine 'then()', die an ein bereits festgelegtes Versprechen angekettet ist, ihren Erfolgs- oder Fehlerrückruf synchron im selben Ereignis-Thread auslöst. Wir verstehen, dass dieses Verhalten in jQuery v3 behoben wird. –