nexttick与其他异步调用的运行顺序比较

输入:

const bar = () => console.log('bar')

const baz = () => console.log('baz')

process.nextTick(()=>{console.log('nexttick')})

const foo = () => {

  console.log('foo')

  setTimeout(bar, 0)

  new Promise((resolve, reject) =>

    resolve(baz())

//    resolve('应该在 baz 之后、bar 之前')

  ).then(() => console.log('hh'))

  

}

 

foo();

console.log('jj')

输出:

foo
baz
jj
nexttick
hh
bar

我试了几个异步操作的顺序,有几个问题。

1.node中nexttick是说下一个事件循环开始前立即执行。也就是说是在上一个事件循环的末尾执行,为什么他会比then中回调执行快。

2.异步队列模型会分类成作业队列和消息队列吗?

promise,mutation observer,setimmediate,settimeout分别会插入到哪种队列中,我理解上微任务会被推入作业队列,异步宏任务会被推入消息队列中,是这样子吗

3.到底什么是一个事件循环,是指调用栈中运行完所有的同步代码,下一个事件循环就是指调用异步队列中的代码吗

 

https://www.jianshu.com/p/184988903562  process.nextTick是微任务