如果我没理解错的话,在 Node 中,从优先级来说,IO 队列 > 检查队列。
但是如果你运行这段代码:
fs.readFile('./tweets.json', (err, data) => {
console.log('IO Queue');
});
setImmediate(() => {
console.log('Check Queue');
});
结果是:
Check Queue
IO Queue
此外,如果出现错误,结果日志将被反转。难道还有什么我不知道的事情吗?
传递给
readFile
的回调仅在读取文件或发生错误时才会排队。在读取文件的情况下,这在非 JS 级别上需要一些时间,因此当节点监视其队列时,它发现 IO 队列仍然为空,并继续检查队列。
根据错误的不同,错误情况可能是立即发生的,例如结构错误的文件名。在这种情况下,回调将立即放入 IO 队列中,节点将首先找到它。