节点的队列:Check Queue 与 IO Queue 的顺序?

问题描述 投票:0回答:1

如果我没理解错的话,在 Node 中,从优先级来说,IO 队列 > 检查队列。

但是如果你运行这段代码:

fs.readFile('./tweets.json', (err, data) => {
  console.log('IO Queue');
});
setImmediate(() => {
  console.log('Check Queue');
});

结果是:

Check Queue
IO Queue

此外,如果出现错误,结果日志将被反转。难道还有什么我不知道的事情吗?

node.js event-loop
1个回答
0
投票

传递给

readFile
的回调仅在读取文件或发生错误时才会排队。在读取文件的情况下,这在非 JS 级别上需要一些时间,因此当节点监视其队列时,它发现 IO 队列仍然为空,并继续检查队列。

根据错误的不同,错误情况可能是立即发生的,例如结构错误的文件名。在这种情况下,回调将立即放入 IO 队列中,节点将首先找到它。

© www.soinside.com 2019 - 2024. All rights reserved.