一、promise的用途
1. 主要用于异步计算
2. 可以将异步操作队列化,按照期望的顺序执行,返回符合预期的结果
3. 可以在对象之间传递和操作promise,帮助我们处理队列
4. 解决回调地狱的问题
二、异步操作的常见语法
三、promise 简介
四、promise的状态(三个)
pending: 初始状态--实例化
fulfilled:【实现】操作成功---resolve
rejected:操作失败---reject
promise状态发生改变,就会触发.then()里的响应函数处理后步骤
promise实例状态改变,不会在变
promise实例一经创建,执行器立即执行
五、.then()
.then() 接收两个函数作为参数,分别代表 fulfilled 和 rejected
.then() 返回一个新的promise实例,所以它可以链式调用
.then() 根据promise的最终状态,选择其特定的状态响应函数执行
六、then的嵌套
.then() 里会有.then() 的情况
1. 因为.then() 返回的是promise实例
2. 会等里面的.then() 执行完毕,再执行外面的
七、promise 常用函数
1. promise.all()
批量执行: promise.all([p1, p2, p3, .......]) 用于将多个promise 实例,包装成一个新的promise实例;
返回的实例就是普通的promise
2. promise.all() 最常见的就是和.mapI() 连用
3. 实现队列,使用.forEach()
4.promise.resolve() \ promise.reject() \ promise.race()
promise.race类似于promise.all() ,区别在于它有任意一个完成就算完成
常见用法:把异步操作和定时器放在一起,如果定时器先触发,就认为超时,告知用户;
八、回调包装成promise
好处:可读性好;返回的结果可以加入任何promise队列
九、async/await
好处: 赋予JavaScript 以顺序手法编写异步脚本的能力!
既保留异步运算的无阻碍特性,还继续使用同步写法;
还能正常使用return、 try、catch