gpt4 book ai didi

javascript - 为什么 Q.js 的 Promise 在解决后是异步的?

转载 作者:行者123 更新时间:2023-12-04 00:05:51 25 4
gpt4 key购买 nike

如果我有以下情况:

var deferred = Q.defer();

deferred.resolve();

var a = deferred.promise.then(function() {
console.log(1);
});

console.log(2);

...为什么我在控制台中看到 2,然后是 1?

我知道根据 Promises 规范,这个输出是正确的,它说在下一个滴答时调用函数(例如 setTimeout() ),即使它已经解决了,但我不明白为什么。

我想要调用 then 的代码假设所有的 Promise 都已解决,同步地执行一系列 Promise。

我真正的用例是我正在尝试使用 Angular 的实现, $q , 我想要所有的 then在同一 $digest 中执行的回调循环,这样我就不会得到不必要的后续 $digest循环。

最佳答案

答案是一致性。

在实际代码中,您没有在创建时总是立即解决的 promise ,它们毫无意义。所以你有一些有时可能会立即解决的 promise 。

在这种情况下,您不希望有不同的流程。您希望始终保持相同的、可预测的流量。因此,您希望在下一次滴答时始终调用下一个函数。

不要在不需要时使用 promise 。

关于javascript - 为什么 Q.js 的 Promise 在解决后是异步的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24881345/

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