首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >setImmediate之前的setTimeout

setImmediate之前的setTimeout
EN

Stack Overflow用户
提问于 2016-02-18 22:34:16
回答 1查看 88关注 0票数 0

这段代码打印出setTimeout在setImmediate之前。为甚麽呢?我以为所有的setImmediates都是在setTimeouts之前运行的。

代码语言:javascript
复制
setImmediate(function() {
    console.log("i");
});

setTimeout(function() {
    console.log("t");
}, 0);

var i;
for (i = 0 ; i < 3000000000 ; ++i) {}
EN

回答 1

Stack Overflow用户

发布于 2019-02-23 17:20:35

根据NodeJS Event Loop docs的说法

如果两者都是从主模块内部调用的,则计时将受到进程性能的限制(这可能会受到计算机上运行的其他应用程序的影响)。

然而,在这种情况下确实会发生这种情况:如果您在一个I/O周期内移动两个调用,则始终首先执行直接回调:

代码语言:javascript
复制
// timeout_vs_immediate.js
const fs = require('fs');

fs.readFile(__filename, () => {
  setTimeout(() => {
    console.log('timeout');
  }, 0);
  setImmediate(() => {
    console.log('immediate');
  });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35484296

复制
相关文章

相似问题

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