代码执行过程:
1.宿主环境(浏览器)把一段代码给js引擎–js引擎按顺序执行 。(因为是宿主环境发起,这也是一条宏任务)
2.(需要知道每个宏观任务尾部会跟着微任务队列)当有微观任务出现,会把他放在微任务队列中,在上一步的宏任务执行完后再执行
3.若有宏观任务出现,会放入宏观任务队列中,等待上一步微任务队列都执行完以后执行一条宏观任务,重复第二步
技巧:
1.分析有几个宏观任务
2.每个宏观任务后面带哪几个微观任务
3.确定宏观任务的执行顺序
网上有很多关于setTimeout和promise的例题与解析,上面这个技巧是我觉得很好记忆的。
注:
宿主环境会提供一些api如setTimeout给js引擎使用。宿主发起的被称为宏观任务。
es5 promise是js自己发起的,不是从宿主环境发起,被称为微观任务。