美文网首页前端相关
从process.nextTick(cb)/Promise说起,

从process.nextTick(cb)/Promise说起,

作者: DeeJay_Y | 来源:发表于2017-12-29 18:59 被阅读3次

    上次写了对JS的执行机制的一些初步理解,分为同步任务和异步任务,task queue,event loop等。
    然后我看到了这么一段代码:

    setTimeout(function() {
        console.log('setTimeout');
    })
    
    new Promise(function(resolve) {
        console.log('promise');
        resolve()
    }).then(function() {
        console.log('then');
    })
    
    console.log('console');
    

    最后的输出结果是我不理解的:

    // promise
    // console
    // then
    // setTimeout
    

    那就从这开始说起

    对同步任务和异步任务更精细的分类: macro-task和micro-task

    除了广义的同步任务和异步任务,我们对任务有更精细的定义:

    • macro-task(宏任务):包括整体代码script,setTimeout,setInterval
    • micro-task(微任务):Promise,process.nextTick

    不同类型的任务会进入对应的Event Queue,比如setTimeout和setInterval会进入 macro-task队列。

    相关文章

      网友评论

        本文标题:从process.nextTick(cb)/Promise说起,

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