📅  最后修改于: 2023-12-03 15:14:53.831000             🧑  作者: Mango
在 ES6 中,Promise 是一种用于处理异步操作的对象。它代表了一个异步操作的最终完成或失败,并可以返回结果或错误信息。
Promise 有三种状态:
为了创建一个 Promise 对象,可以使用 Promise 构造函数,它接受一个执行器函数作为参数。执行器函数包含两个参数,一个是 resolve 函数用于将 Promise 的状态从 Pending 转为 Fulfilled,另一个是 reject 函数用于将 Promise 的状态从 Pending 转为 Rejected。
const promise = new Promise((resolve, reject) => {
// 异步操作
// 如果操作成功,调用 resolve(result)
// 如果操作失败,调用 reject(error)
});
可以通过对 Promise 对象调用 .then()
方法来注册成功后的回调函数,并使用 .catch()
方法来注册失败后的回调函数。
promise
.then(result => {
// 处理成功的结果
})
.catch(error => {
// 处理失败的错误信息
});
一旦 Promise 的状态转为 Fulfilled 或 Rejected,就会保持不变,不会再发生变化。
当 Promise 的状态已经是 Fulfilled 时,调用 .then()
方法会立即触发成功的回调函数。
当 Promise 的状态已经是 Rejected 时,调用 .catch()
方法会立即触发失败的回调函数。
若在 Promise 状态还是 Pending 时注册回调函数,这些回调函数将会在 Promise 状态变为 Fulfilled 或 Rejected 时被调用。
Promise 提供了一种链式调用的方式,可以避免回调地狱。通过在 .then()
方法中返回一个新的 Promise 对象,可以在异步操作完成后继续进行下一个异步操作。
promise
.then(result => {
// 处理成功的结果
return anotherAsyncOperation(result);
})
.then(anotherResult => {
// 处理另一个异步操作的结果
})
.catch(error => {
// 处理失败的错误信息
});
在链式调用中,如果某个 .then()
方法返回了一个非 Promise 对象,后续的 .then()
方法将会立即被调用,并使用该值作为参数。
ES6 中的 Promise 提供了一种优雅地处理异步操作的方式。通过了解 Promise 的三种状态,以及如何使用和链式调用 Promise,可以更好地处理异步任务,提高代码的可读性和可维护性。
更多关于 Promise 的内容,请参考 MDN Promise 文档。