gpt4 book ai didi

javascript - 对 `Promise`和 `then()`执行顺序

转载 作者:行者123 更新时间:2023-12-03 05:16:59 25 4
gpt4 key购买 nike

假设我有一个这样的函数

const fn = () => {
return work()
.then((finalResult) => { // then 1
finish(finalResult);
});
};


const work = () => {
return Promise.resolve(1)
.then(() => { // then 2
return process1();
}).then((result) => { // then 3
return process2(result);
});
};

我的问题是:我可以相信 finish 将在 process1process2 之后调用吗?具体来说,是 then 1 附加到 Promise.resolve(1) 返回的 Promise,还是附加到 then 3 返回的 Promise。

最佳答案

这首先是语法问题。你正在做的事情相当于

const fn = () => {
const promiseA = work();
const promiseB = promiseA.then(finish); // then 1
return promiseB;
};

const work = () => {
const promiseC = Promise.resolve(1);
const promiseD = promiseC.then(process1); // then 2
const promiseE = promiseD.then(process2); // then 3
return promiseE;
};

只是引入一些额外的变量(而且我还简化了函数表达式)。

现在我们可以清楚地看到work()的结果就是它返回的结果,所以promiseA === PromiseE。所以是的,finish 链接到“then3”调用的结果。

知道then创建了一个新的promise(用于回调的最终结果)而不是返回原始的promise,我们还可以得出结论:promiseE !==promiseC ,因此 finish 没有链接到 Promise.resolve(1)

关于javascript - 对 `Promise`和 `then()`执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41558467/

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