javascript运行机制

94 阅读1分钟

一、什么是同步异步

异步:

  1. 计时器(setTimeout,setInterval)
  2. ajax
  3. 读取文件

同步程序执行完成后,执行异步程序

二、单线程

js是单线程的,一个任务完成之后才能执行另一个任务

三、process.nexTick 与 setImmediate方法 - 同步程序执行完成后,异步程序执行之前执行process.nexTick(()=>{} ) - 当前事件队列执行完成之后执行setImmediate(()=>{})

四、宏任务与微任务

  • 宏任务:计时器、ajax、读取文件、DOM事件、DOM渲染
  • 微任务:promise.then,async/await

执行顺序:

  1. 同步任务
  2. process.nextTick
  3. 微任务:promise.then
  4. 宏任务:计时器、ajax、读取文件
  5. setImmediate
  6. 新的开始....

五、promise与async函数

  • async函数返回值是promise对象
  • await直接得到promise的返回值
let p = new Promise((resolve) => {
    console.log(1)
    resolve('hello')
})
p.then((data) => {
    console.log(data)
})