当我投入研究Promise
s 时,我对以下我没有讨论过的问题的理解已经停止(我发现的只是对Promise
构造函数和Promise
' then
' 函数的具体讨论 - 但不是比较它们的设计模式的讨论)。
1.Promise
构造函数
从 MDN 文档中,我们使用了 Promise 构造函数(添加了我的评论):
new Promise(function(resolve, reject) { ... }); // <-- Call this Stage 1
具有两个参数的函数对象
resolve
和reject
. 第一个参数实现了承诺,第二个参数拒绝了它。一旦我们的操作完成,我们就可以调用这些函数。
2.then
功能
继续讨论then
可以在对象上调用的函数Promise
(它返回一个新Promise
对象),我们有文档描述的以下函数签名(添加了我的评论):
p.then(onFulfilled, onRejected);
链接
因为该
then
方法返回一个 Promise,所以您可以轻松地链接 then 调用。
var p2 = new Promise(function(resolve, reject) {
resolve(1); // <-- Stage 1 again
});
p2.then(function(value) {
console.log(value); // 1
return value + 1; // <-- Call this Stage 2
}).then(function(value) {
console.log(value); // 2
});
我的问题
从上面的代码片段中,我似乎很清楚,传递给resolve
第 1 阶段中的函数的值(在第二次出现resolve
- 低于 (2),上面)被传递到下一个阶段(第 1 阶段之后的第一个then
函数相同的代码片段)。 第 1 阶段没有返回值。 但是,第 2 阶段的返回值被传递到之后的下一个阶段(第二个then
函数)。
是否在用于创建 a 的设计模式与在现有 Promise 上Promise
使用该函数(也返回 a )之间缺乏对应关系,只是历史上的侥幸(一个需要调用回调但什么都不返回,而另一个返回一个值但不调用回调)?then
Promise
还是我错过了Promise
构造函数使用与函数不同的设计模式的根本原因then
?