Chr*_*lew 6 javascript promise angularjs
如果我有以下内容:
var deferred = Q.defer();
deferred.resolve();
var a = deferred.promise.then(function() {
console.log(1);
});
console.log(2);
Run Code Online (Sandbox Code Playgroud)
...为什么我在控制台中看到2,然后是1?
我理解这个输出是正确的,根据Promises规范,它说在下一个tick(例如setTimeout())上调用该函数,即使它已经被解析,但我不明白为什么.
then假设已经解决了所有的承诺,我想拥有同步调用一系列promise的代码.
我真正的用例是我正在尝试使用Angular的实现,$q并且我希望所有的then回调都在同一个$digest循环中执行,这样我就不会得到不必要的后续$digest循环.
答案是一致性。
在实际代码中,您没有在创建时总是立即解决的承诺,它们是毫无意义的。所以你的承诺有时可能会立即得到解决。
在这种情况下,您不希望有不同的流程。您想要始终相同的、可预测的流程。因此,您希望下一个函数始终在下一个报价时调用。
当你不需要承诺时,不要使用承诺。
| 归档时间: |
|
| 查看次数: |
345 次 |
| 最近记录: |