gpt4 book ai didi

javascript - .then 方法中链接 promise 与值之间的区别?

转载 作者:行者123 更新时间:2023-12-04 08:44:35 25 4
gpt4 key购买 nike

有一阵子,我以为唯一的方法是链接.then()语句是从 .then 方法返回一个 promise 。 e. G。:

    asyncFunc()
.then(res => asyncFunc2()) // returns a promise
.then(res => doSmth())
但现在我发现你实际上也可以从 .then 函数返回一个普通的旧值,它也可以工作:
    const build = () => new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Hallo")
}, 100)
})

build()
.then(res => {
console.log(res);
return res + " I'm";
})
.then(res => {
console.log(res + " Peter");
})
两者在执行方式和时间方面是否有区别?

最佳答案

每个.then()方法调用返回一个promise,如果回调函数的返回值也是一个promise,那么.then()返回的promise方法调用被解析为那个 promise ,这意味着它的命运现在将取决于回调函数返回的 promise 会发生什么。当回调函数返回的 promise 稳定时,它就会稳定。
另一方面,如果您返回一个非 promise 值,那么该值将被隐式包装在一个 promise 中并传递给下一个 .then()方法调用,如果有的话。如果你没有从回调函数中返回任何东西,那么 .then() 返回的 promise 方法将解析为 undefined 的值.
在第一个代码示例中,当您返回 asyncFunc2() 时来自第一个 .then() 的回调函数方法,它返回的promise将被解析为asyncFunc2()返回的promise .
在第二个代码示例中,res + " I'm"将被隐式包装在一个 promise 中,然后传递给第二个 then()方法。

关于javascript - .then 方法中链接 promise 与值之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64392398/

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