为什么轮询队列不为空,事件循环进入检查阶段

问题描述 投票:0回答:0
    fs.readFile('./1.js', (err, data) => {
        console.log('starta');
        setTimeout(() => console.log('settimeouta'), 20);
        const now = new Date();
        while (new Date() - now < 1000) {
            
        }
        console.log('before setIa')
        setImmediate(() => {console.log('setImmediatea')})
    });
    fs.readFile('./1.js', (err, data) => {
        console.log('startb');
        setTimeout(() => console.log('settimeoutb'), 20);
        const now = new Date();
        while (new Date() - now < 1000) {

        }
        console.log('before setIb')
        setImmediate(() => {console.log('setImmediateb')})
    });
    fs.readFile('./1.js', (err, data) => {
        console.log('startc');
        setTimeout(() => console.log('settimeoutc'), 20);
        const now = new Date();
        while (new Date() - now < 1000) {
            
        }
        console.log('before setIc')
        setImmediate(() => {console.log('setImmediatec')})
    });

1.js
非常小,所有 I/O 回调都有足够的时间进入轮询队列;但结果不符合预期,请告诉我为什么以及轮询检测顺序和优先级。

node.js event-loop
© www.soinside.com 2019 - 2024. All rights reserved.