📅  最后修改于: 2023-12-03 15:02:22.709000             🧑  作者: Mango
Promise 是 Javascript 中一种异步编程的解决方案,它解决了回调地狱的问题,使代码更易读、维护和扩展。
Promise 有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。
Promise 可以通过 Promise 构造函数来创建:
const promise = new Promise((resolve, reject) => {
// 异步操作
// 操作成功
resolve(value);
// 操作失败
reject(error);
});
其中,resolve 和 reject 是 Promise 的两个回调函数。resolve 用于操作成功时的回调,reject 用于操作失败时的回调。
Promise 可以通过链式调用来使用:
promise
.then(onFulfilled)
.catch(onRejected)
.finally(onFinally);
其中,then 用于操作成功时的回调,catch 用于操作失败时的回调,finally 则用于不管操作成功或失败都要执行的情况。
Promise 中还有一些静态方法:
Promise.resolve(value);
Promise.resolve 会返回一个成功(fulfilled)的 Promise 对象,结果为 value。
Promise.reject(error);
Promise.reject 会返回一个失败(rejected)的 Promise 对象,原因为 error。
Promise 实例还有一些方法:
promise.then(onFulfilled, onRejected);
then 方法用于注册成功和失败的回调函数,它可以返回新的 Promise 对象,以实现链式调用。
promise.catch(onRejected);
catch 方法用于注册错误回调函数,它本质上是 then 中只注册错误回调函数的语法糖。
promise.finally(onFinally);
finally 方法用于注册不管成功或失败都执行的回调函数。
const promise = new Promise((resolve, reject) => {
// 异步操作
const isSuccess = true;
if (isSuccess) {
resolve('操作成功');
} else {
reject('操作失败');
}
});
promise
.then((result) => {
console.log(result); // 操作成功
return '新的 Promise 对象';
})
.then((result) => {
console.log(result); // 新的 Promise 对象
throw new Error('手动抛出错误');
})
.catch((error) => {
console.error(error.message); // 手动抛出错误
})
.finally(() => {
console.log('finally'); // finally
});
Promise 是解决异步编程的好方法,可以避免回调地狱,使代码更易读、维护和扩展。