2015-07-27 2 views
5

Betrachten Sie diese Situation.Rückgabewert der Promise-Auflösungs-/Zurückweisungsfunktionen

new Promise(function(resolve, reject) { 
    var x = resolve(2); 
}); 

Welchen Wert wird x haben? Ich habe versucht, es zu drucken, und es zeigte mir undefined. Es ist intuitiv, aber ist es immer so? Ist es in der Dokumentation?

Zweite Frage

new Promise(function(resolve, reject) { 
    resolve(2); 
    return 5; 
}); 

Was sollten wir aus der Funktion zurück, die wir in ein Versprechen setzen? Wird dieser Wert ignoriert?

Antwort

4

Der Rückgabewert des Promethekonstruktors is ignored.

Die resolve Funktion auch returns undefined.

Dies wurde zuerst in der Promethe Constructor-Spezifikation und später in der ES2015 (ES6) language specification angegeben.

+0

Können Sie es in der Spezifikation von Promises zeigen? –

+0

@ MichałKownacki Ich habe Zitate hinzugefügt, überprüfen Sie die Notiz in http://www.ecma-international.org/ecma-262/6.0/index.html#sec-promise-executor –

+0

Ja, aber ich benutze Knoten. js mit Bluebird verwendet es Promises/A + -Standard. –