首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Promise.resolve().then诉setImmediate诉nextTick

Promise.resolve().then诉setImmediate诉nextTick
EN

Stack Overflow用户
提问于 2014-12-25 13:44:22
回答 2查看 15.4K关注 0票数 39

NodeJS 0.11以及io.js和Node0.12分支都带有本地承诺。

本机承诺 method,它总是在未来的事件循环循环中执行。

到目前为止,我一直使用setImmediate将事情排队到事件循环的下一次迭代中,自从我switched from nextTick以来

代码语言:javascript
复制
setImmediate(deferThisToNextTick); // My NodeJS 0.10 code
process.nextTick(deferThisToNextTick); // My NodeJS 0.8 code

因为我们现在有了一种新的方法来做到这一点:

代码语言:javascript
复制
Promise.resolve().then(deferThisToNextTick); 

我该用哪一种?另外,对于在事件循环之前或之后运行的代码,Promise.resolve.then setImmediate nextTick 的行为是否与类似?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-25 15:11:15

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

Promise.resolve().then显然速度较慢(我认为非常慢),因为它创建了两个将被丢弃的承诺。

您可以在这里找到广泛的实现信息:https://github.com/joyent/node/pull/8325

最重要的部分是:Promise.resolve().thennextTick而不是setImmediate。使用它代替setImmediate可以极大地改变您的代码行为。

票数 34
EN

Stack Overflow用户

发布于 2017-07-03 04:03:54

Promise.resolve将立即解析(同步),而setImmediate则直接在当前事件执行之后显式地解析。

票数 -5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27647742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档