如何将任务放入微队列

45 阅读1分钟
function runMicroTask(executor){
    if(process && process.nextTick){
        process.nextTick(executor)
    }else if(MutationObserver){
        const p=document.createElement('p')
        const observer=new MutationObserver(executor)
        observer.observe(p,{
            childList:true
        })
        p.innerHTML='1'
    }else{
        setTimeout(executor)
    }
}

区分node和浏览器环境

node有全局对象process,通过process.nextTick可直接将任务放入微队列。

浏览器有全局对象MutationObserver,创建一个元素,监听到变化就可以将任务放入微队列。