【发布时间】:2015-03-30 14:34:52
【问题描述】:
我试图理解 Promises/A+,但我对几点感到困惑。考虑一下:
function foo() {
console.log("In 'foo' function: --> which returns a Promise");
return new Promise(function (resolve, reject) {
resolve()
});
}
var promise1 = foo();
var promise2 = promise1.then(function () {
console.log("Promise 1 has been resolved --> onFulfilled() returns a value");
return 1;
});
var promise3 = promise2.then(function () {
console.log("Promise 2 has been resolved --> onFulfilled() is not returning anything from inFulfilled()");
});
var promise4 = promise3.then(function () {
console.log("Promise 3 has been resolved");
});
/* Console:
In 'foo' function: --> which returns a Promise
Promise 1 has been resolved --> onFulfilled() returns a value
Promise 2 has been resolved --> onFulfilled() is not returning anything from inFulfilled()
Promise 3 has been resolved
*/
【问题讨论】:
-
在 JavaScript 中不返回任何内容与
return undefined相同,这意味着您使用undefined解决了承诺。调用者无法区分忘记返回和显式return undefined之间的区别,因此它不是实现。如果可以,那就太好了,因为忘记返回语句是最常见的承诺错误。
标签: javascript node.js promise bluebird