回调地狱
promise 承诺
实现承诺 承诺石沉大海 承诺等待结果中……
resolve 解决问题
reject 拒绝考虑
pending 苦苦等待
解决异步流程化的一种手段。
Promise 是一个构造函数 需要new
Promise 参数 excutor 执行器
excutor -> resolve reject 函数
excutor new Promise 调用
// excutor 是同步执行的 let promise = new Promise((resolve,reject)=>{ console.log(1); }) console.log(2); // then 是异步调用
excutor 是同步执行的。
then 是异步调用。
pending -> resolve
pending -> reject
只能这样转换。
Promise.all([promise1,promise2,promise3])
多个异步任务并发运行,它的结果创建承诺之后使用,等待所有任务结果完成。
iterable 内部元素传递的是promise对象集合,如果不是promise,直接resolve将值返回
iterable 内部没有元素,就返回空数组。
其中只要有一个promise 是rejected状态的话,那么实例回调就是rejected。
失败的原因是第一个失败的promise 的结果
Promise.race()
谁先完成就返回那个promise的结果,无论是成功还是失败(fullfilled或者rejected)
测试资源或者接口的响应速度
async await
await 是一个操作符,等待一个Promise对象产出结果的操作手段
功能是暂停async函数的执行,等待promise处理后的结果。
如果Promise 处理结果是rejected,会抛出异常
acync 函数是通过隐式的Promise 返回pending状态
async 的意思是当前这个异步函数与同一作用域下的程序是异步的关系。