1-3、Promise知识与使用

前置知识

JS 运行机制

JS 是单线程的,在同一时间只能做同一件事:协调事件、用户交互、脚本、UI 渲染和网络处理等行为。
JS 为什么是单线程:因为 JS 可以操作 DOM,那如果是多个线程操作同一个 DOM,那如何判断优先级呢?所以为了避免这个问题,JS 就故意设计为单线程
JS 的代码是一行行执行的,即同步执行
执行时会创建执行上下文,主要有全局、函数执行上下文
遇到函数被调用则创建一个新的函数执行上下文,函数的代码在里面被执行
那遇到异步任务时,不可能一直等待异步任务完成后再执行,因此会放入异步任务处理模块中执行,等其执行完毕后再将其回调函数放到事件队列中,然后由事件循环来处理(需要执行的就拿出来执行)
异步任务分为:微任务、宏任务,微任务优先级高于宏任务
常见的微任务包括 Promise 的 then 方法和 async/await 中的 await(后面的代码都看作为回调函数哦)
宏任务包括定时器、事件处理、网络请求等

所以整个 JS 运行是由:[同步任务、异步任务(微任务、宏任务)] 不停的循环直到执行完毕

事件循环(Event Loop)

  1. 第一次进入