首先说一下同步和异步的概念:
同步:同步就是一个任务执行完了,另一个任务才可以执行,程序的执行顺序与任务的排列顺序是一致的。
异步:异步其实就是多线程多任务,比如说做一件事情的同时可以做其他事情。
补充:
异步任务又分为宏任务和微任务。
宏任务:(1)定时器setTimeout和setInterval(2)ajax请求(3)读取文件
微任务:promise.then
执行顺序:
1.同步程序
2.process.nextTick
3.微任务
4.宏任务
5.setImmediate
举个例子:
setImmediate(() => {
console.log(1);
})
console.log(2);//同步
setTimeout(() =>{console.log(3)},0) //宏任务(宏任务只执行一次)
setTimeout(() =>{console.log(4)},500)
console.log(5);//同步
new Promise((resolve, reject) => {
console.log(6);//同步
resolve()
}).then(() =>{
console.log(7); //微任务
})
process.nextTick(() => {
console.log(8);//同步之后process.nextTick
})
输出结果: