2015-07-27 27 views
5

Rozważ tę sytuację.Wartość zwracana funkcji rozstrzygania/odrzucania obietnicy

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

Jaka będzie wartość x? Próbowałem go wydrukować i pokazało mi undefined. Jest intuicyjny, ale czy zawsze tak jest? Czy to jest w dokumentach?

Drugie pytanie

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

Co powinniśmy wrócić z funkcji, które stawiamy do obietnicy? Czy ta wartość jest ignorowana?

Odpowiedz

4

Wartość zwracana przez obiecującego konstruktora is ignored.

Funkcja resolve także resolve również returns undefined.

Zostało to po raz pierwszy określone w specyfikacji konstruktora obietnicy, a później w ES2015 (ES6) language specification.

+0

Czy możesz to pokazać w specyfikacji Promises? –

+0

@ MichałKownacki Dodałem cytaty, a mianowicie sprawdź notatkę na http://www.ecma-international.org/ecma-262/6.0/index.html#sec-promise-executor –

+0

Tak, ale używam węzła. js z Bluebirdem, używa standardu Promises/A +. –