Promise.resolve()then vs setImmediate vs nextTick

【字号: 日期:2024-04-15浏览:31作者:雯心
(adsbygoogle = window.adsbygoogle || []).push({}); 如何解决Promise.resolve()then vs setImmediate vs nextTick?

使用Promise.resolve().then没有优势nextTick。它在相同的队列上运行,但是具有更高的优先级,也就是说,promise处理程序可以阻止下一个滴答回调的运行,相反则不可能。此行为是实现细节,不应依赖。

Promise.resolve().then 显然要慢一些(我认为很多),因为它创建了两个被抛弃的承诺。

您可以在此处找到广泛的实施信息:https ://github.com/joyent/node/pull/8325

最重要的部分:Promise.resolve().then喜欢nextTick和不喜欢setImmediate。使用n代替setImmediate可以大大改变您的代码行为。

解决方法

NodeJS 0.11以及io.js和Node 0.12分支都带有本机Promise。

本机承诺具有.then始终在未来事件循环周期中执行的方法。

setImmediate从我从nextTick切换到现在,到目前为止,我一直在将事情排队到事件循环的下一个迭代:

setImmediate(deferThisToNextTick); // My NodeJS 0.10 codeprocess.nextTick(deferThisToNextTick); // My NodeJS 0.8 code

由于我们现在有了一种新的方法来执行此操作:

Promise.resolve().then(deferThisToNextTick);

我应该使用哪个?也-并Promise.resolve.then像setImmediate或类似nextTick至于事件循环之前或之后运行的代码?

相关文章: