美文网首页
js事件循环之微任务,宏任务

js事件循环之微任务,宏任务

作者: 小猪佩奇的王子 | 来源:发表于2019-10-09 15:44 被阅读0次

    js单线程特性使得所有任务都排队执行,有一个事件循环的概念,不做深入解释

    概念

    微任务:promise的then, catch方法,node中process.nextTick方法
    宏任务:非微任务,如同步任务,异步任务等

    执行顺序

    同步任务->微任务->异步任务

    let A = setTimeout(function() {
        new Promise(function(resolve, reject) {
            console.log("A->异步宏任务promise")
            resolve()
        }).then(function() {
            console.log("A->异步微任务then")
        })
        console.log("A->异步宏任务")
    }, 0)
    
    let B = new Promise(function(resolve, reject) {
        console.log("B->同步宏任务promise")
        resolve()
    }).then(function() {
        console.log("B->同步微任务then")
    })
    
    let C = console.log("C->同步宏任务")
    

    结果

    B->同步宏任务promise
    C->同步宏任务
    B->同步微任务then
    A->异步宏任务promise
    A->异步宏任务
    A->异步微任务then
    

    解释

    A是异步任务,放入事件队列中等待执行
    B是promise,new promise是同步任务,then是微任务等待resolve
    C是同步任务
    所以先执行B的new Promise,然后C,然后B的then,之后执行异步A,A内部的代码与上面顺序相同

    相关文章

      网友评论

          本文标题:js事件循环之微任务,宏任务

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