输入:
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是微任务