which-6ren">
gpt4 book ai didi

javascript - 为什么后续的链式 promise 得到解决?

转载 作者:行者123 更新时间:2023-11-30 12:29:15 25 4
gpt4 key购买 nike

我正在努力了解 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
*/
  • Promise 1 必须通过调用 resolve() 明确解决,否则执行将停止。为什么使用 Promises 2 和 3,执行会认为这些已解决(不需要 resolve())并前进到链中的下一个 .then
  • 链接到 promise2 的 'onFullfilled()' 函数不返回值。我找不到任何明确的 reference在规范中,在这种情况下应该发生什么。这种情况是否被视为函数返回 undefined ?这取决于所使用的库的实际实现吗?

最佳答案

Promise 处理程序(成功或错误处理程序)有一个返回值。每次 then 调用都会创建一个新的 promise 。

如果返回一个值,则 promise 会自动解析。如果返回另一个 promise,则该 promise 将等到它被解决或拒绝,然后再继续 promise 链中的下一个 then 调用。

我认为这可以解释您所看到的行为。

关于javascript - 为什么后续的链式 promise 得到解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28247389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com