1、promise 的介绍:
一种用于解决异步编程的方案,可以解决多层回调函数嵌套造成的回调地狱问题。
2、promise的三种状态:
pending(进行中)、fulfilled(已成功)、rejected(已失败)
3、promise的特点
①promise接收一个函数作为参数,该函数的参数是resolve和reject两个函数,当异步操作成功时【pending到fufilled】,会调用resolve()函数把结果作为参数传出;当异步操作失败时【pending到rejected】,会调用reject()函数把错误进行返回。
②promise实例生成后,可使用then进行捕捉状态,若then中返回一个promise 对象则可作为下一个then的参数
4、promise的优缺点
缺点:
① promise 一旦新建就会立即执行,无法中途进行取消
②当处于pending状态时,无法知道目前处于阶段(是刚开始或即将结束)
③若不设置回调函数,promise内部抛出的错误不会反映到外部
优点:
①更好地解决了异步嵌套的问题(回调地狱)
②更好地进行错误的捕捉(异常处理)
5、promise 的使用
①pending 状态
const status = new Promise((resolve, reject) => {});
console.warn("status===", status); // pending状态
②fulfilled状态
const status = new Promise((resolve, reject) => {
resolve(1);
});
console.warn("status===", status); // fulfilled状态
status
.then((value) => {
console.warn("value===", value); // 1
})
.catch((value1) => {
console.warn("error===", value1);
});
③rejected状态
const status = new Promise((resolve, reject) => {
reject(1);
});
console.warn("status===", status); // rejected状态
status
.then((value) => {
console.warn("value===", value);
})
.catch((value1) => {
console.warn("error===", value1); // 1
});