假设我有以下 Promise
:
function doSomethingAsynchronous() {
return new Promise((resolve) => {
const result = doSomeWork();
setTimeout(() => {
resolve(result);
}), 100);
});
}
在哪个时间点调用 doSomeWork()
?它是在构建 Promise
之后还是构建时立即构建的?如果没有,我是否需要明确地做一些额外的事情来确保 Promise
的主体运行?
原文由 Kevin 发布,翻译遵循 CC BY-SA 4.0 许可协议
立即,是的,根据规范。
来自 MDN :
这是在 ECMAScript 规范中定义的(当然,它更难阅读……) 此处(此编辑的第 9 步,显示执行程序被同步调用):
(我的重点)
这种保证可能很重要,例如,当您准备多个承诺时,然后传递给
all
或race
,或者当您的执行者具有同步副作用时。