根据 Promise A+ 规范,
2.2.2.1 如果 onFulfilled 是一个函数,它必须在 promise 完成后调用,promise 的值作为它的第一个参数。
但是,如果在.then () 中传递了一个 Promise,会发生什么?
现在我们有了这段代码:
var Promise = require('bluebird');
var func1 = function() {
return new Promise(function(resolve, reject) {
resolve('hello');
});
}
var wrapper = function() {
return func1();
}
var api = function() {
return wrapper()
.then(wrapper());
}
api().then(function(msg) {
console.log(msg);
});
为什么要打印“你好”?
在 api 函数中,wrapper() 通过 func1() 被评估为一个Promise,并在 .then() 中被传递。现在,这个承诺根据引用的规范执行“onFulfilled”功能。但是,规范说 onFulfilled(在这种情况下是返回的 promise)期望传入一个参数作为调用 .then() 的前一个 promise 的值。但是如何将值传递到 Promise 中呢?
我不太擅长解释事情。因此,如果您感到困惑,您能解释一下为什么要打印“hello”吗?如何?