JS 异步编程的理解

205 阅读1分钟

知识点理解

  • 异步编程

    • 由于 JavaScript 单线程语言,如果是耗时很短的同步任务还能接受;如果遇到耗时很长的同步任务(如请求资源),直接使用同步编程会导致页面假死。必须借助异步编程才能提高用户的体验。

  • call stack (执行栈)

    管理同步任务调用顺序的工具,数据结构为栈(先进后出)。

  • queue (消息队列 or 任务队列)

    放置异步任务回调函数的工具,数据结构为队列(先进先出)。

  • Event Loop

    协调同步任务与异步任务执行的机制

  • 宏任务/微任务

    • 同属于异步任务,异步任务被分别放入到宏任务 or 微任务后,当任务完成时,会根据一定的规则将异步结果(通过回调函数)放入到 queue 中,等待 Event Loop 调用
    • 规则是:
      • 将宏任务放入到 queue 之前,会检查有没有微任务

      • 如果有的话,先把微任务先放到 queue,等待所有微任务都被执行完,再执行宏任务