异步编程是处理耗时操作(如网络请求、文件读写、数据库操作等)而不阻塞主线程的一种方式。JavaScript是单线程的,这意味着它一次只能执行一个任务。如果所有操作都是同步的,那么在执行耗时操作时,页面会变得无响应,用户体验会非常差。
为什么需要异步编程?
Promise 是 JavaScript 中用于处理异步操作的一种机制。它解决了传统回调函数(Callback)模式中的一些问题,使得异步代码更易于编写、阅读和维护
promise,并把返回值作为resolve的值,链式操作时会作为下一个then的结果ES9(ES2018)新增的特性
无用论fullfilled还是rejected,都会回调这个函数
promise状态是fullfilled时,最终状态为fullfilled,在then中回调所有的执行结果的数组promise为reject,则最终状态为reject,并返回第一个reject结果,可以catch到第一个errorES11 (ES2012) 新增promise状态由最快的一个promise决定实际上是生成器函数的语法糖,并且做了一些优化
生成器函数返回一个迭代器,调用next方法返回每个yield后面的promise,再在promise的then中再次调用next并把结果当成参数传递进去
生成器函数与promise的结合
async用于定义一个异步函数 await只能在异步函数中使用 (ES8),以及在模块顶层使用(ES13)