Javascript单线程任务被分为同步任务和异步任务
同步任务:立即执行的任务,在主线程上排队执行,前一个任务执行完毕,才能执行后一个任务;
异步任务:异步执行的任务,不进入主线程, 而是在异步任务有了结果后,将注册的回调函数放入任务队列中等待主线程空闲的时候读取执行。即(同步任务执行完后,谁先满足条件,先执行谁)
事件循环概念:主线程不断从任务队列中读取事件的机制叫做事件循环机制
异步任务分类
异步任务又可以分为宏任务队列与微任务队列
宏任务:script(整体代码)、setTimeout、setInterval、I/O、事件等
微任务:Promise的then、catch、finally和process的nextTick都是微任务
PS:Promise的then等方法是微任务,而Promise中的代码是同步任务
在当前的微任务没有执行完成时,是不会执行下一个宏任务的。
综上:任务的执行顺序是:同步任务>微任务>宏任务