一道题判断自己是否明白node事件机制

287 阅读1分钟
const fs = require('fs');
(function mainline() {
    Promise.resolve().then(res => { console.log('D') });

    process.nextTick(res => { console.log('C') });

    console.log('A');

    setTimeout(() => {
      console.log('N')
      process.nextTick(() => { console.log('O') })
    },0); // delay 为 80 的时候答案时多少呢?

    setImmediate(() => {
        console.log('G');
        fs.readFile('./vuex.mp4', 'utf8', (err, files) => { console.log('J') })
    });
    
    fs.readFile('./vuex.mp4', 'utf8', (err, files) => {
        console.log('E');

        setTimeout(() => { console.log('M') }, 50);

        setTimeout(() => { console.log('L') },20);

        setImmediate(() => { console.log('H') });

        process.nextTick(() => {
            console.log('F');

            setImmediate(() => {
              console.log('I');

              setImmediate(() => {
                  console.log('K');
              });
            });

            setTimeout(() => { console.log('我在哪里') }, 0);
        });
        console.log('我又在哪里')
    });
    console.log('B');
})();

答案是什么呢?

如果你能在不运行代码的情况下说出答案,那么,恭喜你打败了99%的node工程师。