一、什么是同步异步
异步:
- 计时器(setTimeout,setInterval)
- ajax
- 读取文件
同步程序执行完成后,执行异步程序
二、单线程
js是单线程的,一个任务完成之后才能执行另一个任务
三、process.nexTick 与 setImmediate方法 - 同步程序执行完成后,异步程序执行之前执行process.nexTick(()=>{} ) - 当前事件队列执行完成之后执行setImmediate(()=>{})
四、宏任务与微任务
- 宏任务:计时器、ajax、读取文件、DOM事件、DOM渲染
- 微任务:promise.then,async/await
执行顺序:
- 同步任务
- process.nextTick
- 微任务:promise.then
- 宏任务:计时器、ajax、读取文件
- setImmediate
- 新的开始....
五、promise与async函数
- async函数返回值是promise对象
- await直接得到promise的返回值
let p = new Promise((resolve) => {
console.log(1)
resolve('hello')
})
p.then((data) => {
console.log(data)
})