>[danger]介绍一下async/await 的实现原理 在 JavaScript 引擎中,async/await 函数的实现原理是**基于 Promise 对象**和**生成器函数**(Generator Function)的协作。 --- * 具体来说,async/await 函数内部会将其代码块转换为一个状态机,并使用生成器函数返回的迭代器来进行状态的管理和切换,从而实现异步的调用和处理。 * 当 async 函数被调用时,它会立即返回一个 Promise 对象,并且开始执行其中的代码。当遇到 await 表达式时,async 函数会暂停执行并将控制权转交给生成器函数返回的迭代器对象,该对象会执行一个 next() 方法来将获取到的 Promise 对象进一步传递。 * 在等待的过程中,async 函数会依次执行其代码块中下一个 await 表达式之前的所有同步操作。当等待的 Promise 对象状态变为 resolved 时,async 函数会再次被调用并继续执行,直到代码块执行结束或者抛出异常。 --- 需要注意的是,async/await 函数的实现原理并不是原生的 JavaScript 语法规范所支持的,而是通过编译工具(如 Babel 等)将其代码转换为符合 JavaScript 语法规范的代码实现。