1、promise是什么:是一个构造函数,通过new关键字构造出来了一个对象 这个对象的返回值是一个promise对象
2、promise做了什么:对一个异步操作的封装,操作的结果有三个 等待结果 、成功结果、失败结果
一个promise的状态只能从pending 转换为resolved 或者pending 转换为rejected,
3、promise解决了什么问题:解决了回调地狱的问题,代码的重复嵌套 会造成代码的可读性差 ,
function a() {
function b() {
function c() {
function d() {}
d();
}
c();
}
b();
}
a();
注意:promise的回调函数是同步代码,promise对象中封装的方法是异步代码 ,封装的方法有
then方法:then()方法是异步执行,then()前的方法执行完后再执行then()内部的程序,这样就避免了,数据没获取到等的问题。
语法:promise.then(onCompleted, onRejected);
参数
promise 必需。 Promise 对象。
onCompleted 必需。 承诺成功完成时要运行的履行处理程序函数。
onRejected 可选。 承诺被拒绝时要运行的错误处理程序函数。
catch方法:
用了处理当前的promise
对象最终的失败状态的情况,当调用then
方法时是可以不传递失败回调的,那么不传递失败回调,如果调用失败就会被catch
捕获,传入的catch
中的回调函数。
all方法:
all的用法:谁跑的慢,以谁为准执行回调。 都成功则成功 只要有失败,则失败
all接收一个数组参数,里面的值最终都算返回Promise对象
Promise的all方法提供了并行执行异步操作的能力,并且在所有异步操作执行完后才执行回调。
Promise.all(iterable)
方法返回一个 Promise
实例,此实例在 iterable
参数内所有的 promise
都“完成(resolved)”或参数中不包含 promise
时回调完成(resolve);如果参数中 promise
有一个失败(rejected),此实例回调失败(reject),失败原因的是第一个失败 promise
的结果
race方法:谁跑的快 以谁为准执行回调
Promise.race(iterable) 方法返回一个 promise
,一旦迭代器中的某个promise
解决或拒绝,返回的 promise
就会解决或拒绝。
Promise.allSettled()方法
返回一个promise
,该promise
在所有给定的promise
已被解析或被拒绝后解析,并且每个对象都描述每个promise
的结果。