eventloop

作者: HelloHL | 来源:发表于2019-02-26 13:26 被阅读0次

    task: js中每一个eventloop 都有一个或多个task任务队列,是一个先进先出的任务队列,根据任务源来区分任务应该放在哪个task任务队列中。
    任务源有dom操作任务源,网络请求任务源,I/O操作任务源等...(setTimeout,setInterval,setImmediate的回调函数会重新起一个task任务队列)
    microtask: 每一个eventloop都有且只有一个microtask任务队列,也是一个先进先出的任务队列。(promise,process.nextTick会被放到microtask任务队列中)
    在一次eventloop中会先执行task任务队列中的任务,然后执行microtask任务队列中的任务.

    setTimeout(function () {
        console.log(1);
    }, 0);
    
    new Promise(function (resolve, reject) {
        resolve();
    }).then(function () {
        console.log(2);
    });
    
    setTimeout(function () {
        console.log(3);
    });
    
    setTimeout(function () {
        console.log(4);
        new Promise(function (resolve, reject) {
            resolve();
        }).then(function () {
            console.log(5);
        });
        new Promise(function (resolve, reject) {
            resolve();
        }).then(function () {
            console.log(6);
        });
    }, 0);
    // 输出结果为:2 1 3 4 5 6 
    

    相关文章

      网友评论

          本文标题:eventloop

          本文链接:https://www.haomeiwen.com/subject/yndayqtx.html