Promise 是 ES6 中引入的一种异步编程的解决方案,它可以使异步操作更加简洁、可读,同时也可以避免回调地狱的问题。Promise 的状态有三种:pending、fulfilled 和 rejected。本文将详细介绍 Promise 的状态转换及状态判断,并提供示例代码。
Promise 的状态转换
Promise 有三种状态,分别是 pending、fulfilled 和 rejected。当创建一个 Promise 时,它的状态为 pending,即等待异步操作完成。当异步操作完成后,Promise 的状态会从 pending 转换为 fulfilled 或 rejected。
fulfilled 状态
当异步操作成功完成时,Promise 的状态会从 pending 转换为 fulfilled。此时,Promise 的 then 方法会被调用,并传递一个参数,即异步操作的结果。以下是一个示例:
----- ------- - --- ----------------- ------- -- - ------------- -- - ---------------- ------------ -- ------ --- ------------------- -- - -------------------- -- -------- ---------- ---
rejected 状态
当异步操作失败时,Promise 的状态会从 pending 转换为 rejected。此时,Promise 的 catch 方法会被调用,并传递一个参数,即异步操作的错误信息。以下是一个示例:
----- ------- - --- ----------------- ------- -- - ------------- -- - ---------- -------------- ------------ -- ------ --- ------------------- -- - --------------------- -- -------- --------- ---
Promise 的状态判断
在使用 Promise 时,我们需要知道 Promise 的状态,以便在合适的时候处理异步操作的结果。Promise 提供了三个方法来判断 Promise 的状态,分别是:
- Promise.prototype.then
- Promise.prototype.catch
- Promise.prototype.finally
Promise.prototype.then
Promise.prototype.then 方法用于注册 Promise 状态变为 fulfilled 时的回调函数。该方法接收两个参数,分别为成功回调和失败回调。如果 Promise 的状态已经是 fulfilled,那么成功回调会被立即调用,并传递 Promise 的结果作为参数。以下是一个示例:
----- ------- - --- ----------------- ------- -- - ------------- -- - ---------------- ------------ -- ------ --- -- -------------- - ------------------- -- - -------------------- -- -------- ---------- --- -
Promise.prototype.catch
Promise.prototype.catch 方法用于注册 Promise 状态变为 rejected 时的回调函数。该方法接收一个参数,即失败回调。如果 Promise 的状态已经是 rejected,那么失败回调会被立即调用,并传递 Promise 的错误信息作为参数。以下是一个示例:
----- ------- - --- ----------------- ------- -- - ------------- -- - ---------- -------------- ------------ -- ------ --- -- --------------- - ------------------- -- - --------------------- -- -------- --------- --- -
Promise.prototype.finally
Promise.prototype.finally 方法用于注册 Promise 状态变化时的回调函数,无论 Promise 的状态是 fulfilled 还是 rejected,该方法都会被调用。该方法接收一个参数,即回调函数。以下是一个示例:
----- ------- - --- ----------------- ------- -- - ------------- -- - ---------------- ------------ -- ------ --- -- ----------------- - ------------------ -- - -------------------- ----------- -- -------- --------- --- -
总结
本文详细介绍了 Promise 的状态转换及状态判断,并提供了示例代码。通过掌握 Promise 的状态转换及状态判断,我们可以更加灵活地使用 Promise 解决异步编程的问题。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/663ee947d3423812e4d25e21