gpt4 book ai didi

javascript - 什么时候调用 Promise.then() 钩子(Hook)?

转载 作者:行者123 更新时间:2023-11-30 00:31:08 25 4
gpt4 key购买 nike

我观察到 Firefox 的 promise 推迟了完整性通知。以下断言失败,因为调用 onFullfilled() 太晚了*

var resolved = false;
function onFullfilled() {
resolved = true;
log("Completed");
}
Promise.resolve(true).then(onFullfilled);
assert(resolved, "Promise completed promise should call resolution hook immediately.");

什么时候 onFullfilled() 可以保证在 Promise 解析时被调用?

* 在我的例子中,“已完成”日志消息在测试框架报告断言失败后出现。

最佳答案

Promise 解析 Hook 总是在所有同步代码执行后调用。这是设计使然 - 这样做是为了防止竞争条件。

由于 promises 有时会异步解决规范要求,因此它们总是异步解决,因此执行相同的代码路径。 promise 守护你against Zalgo .

specified here :

onFulfilled or onRejected must not be called until the execution context stack contains only platform code.

许多测试框架 - 即 Mocha 支持直接使用 promise-syntax 测试 promise - 通过返回一个 promise。

it("does something", function(){
return aPromise; // if aPromise resolves the test passes
})

关于javascript - 什么时候调用 Promise.then() 钩子(Hook)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29454949/

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