简介
Promise 是 JavaScript 异步编程的一种解决方案,它能够优雅高效地处理异步操作和回调函数。Promise 对象是一个容器,里面保存着某个未来才会结束的异步操作的结果。在 Promise 对象未完成之前,可以添加回调函数,当 Promise 对象完成时,它会自动执行这些回调函数。
Promise 对象的三个状态
Promise 对象有三个状态:Pending、Fulfilled 和 Rejected。
Pending:Promise 实例刚刚被创建,它的结果尚未确定,处于等待状态。
Fulfilled:异步操作成功完成,Promise 实例的状态变为 Fulfilled,同时会保存异步操作的结果。
Rejected:异步操作失败,Promise 实例的状态变为 Rejected,同时会保存失败的原因。
Promise 对象的基本使用
使用 Promise 对象就是创建一个 Promise 对象,然后在 Promise 对象的 then 方法中添加一个成功回调和一个失败回调,当操作成功完成时,就会执行成功回调,如果操作发生错误,就会执行失败回调。
-- -------------------- ---- ------- -- -- ------- -- ----- ------- - --- ----------------- ------- -- - ------------- -- - ----- ------ - ---- ---------------- -- ------ --- -- ------ --------------------- -- - -------------------- -------- ---- --------- -------- ---------------- -- - -------------------- -------- ---- -------- ------- ---
Promise 对象的进阶应用
Promise 对象有很多进阶应用,这里介绍一些常用的应用。
Promise.all()
Promise.all() 方法接收一个包含多个 Promise 实例的数组,并在所有的实例都已经完成时才返回一个新的 Promise,新的 Promise 的结果是一个数组,包含了所有实例的结果。如果其中一个实例发生错误,则该方法返回的 Promise 的状态变为 Rejected,同时会传递唯一的错误原因。
-- -------------------- ---- ------- ----- -------- - ------------------- ----- -------- - --- ----- -------- - --- ----------------- ------- -- - ------------------- ---- ------- --- ---------------------- --------- ------------------------ -- - -------------------- -- --- --- ------ ---
Promise.race()
Promise.race() 方法同样接收一个包含多个 Promise 实例的数组,它返回的 Promise 实例的状态是从已完成的 Promise 实例中获取的。无论是成功还是失败,只要有一个实例先完成,就会返回它的结果。
-- -------------------- ---- ------- ----- -------- - --- ----------------- ------- -- - ------------------- ---- ------- --- ----- -------- - --- ----------------- ------- -- - ------------------- ---- ------- --- ----------------------- ----------------------- -- - ------------------- -- ----- ---
Promise.resolve() 和 Promise.reject()
Promise.resolve() 方法可以将一个值转换成 Promise 对象,如果参数已经是 Promise 对象,则直接返回该对象。它通常用来在当前 Promise 对象执行完毕后,再创建一个新的 Promise 对象。
Promise.reject() 方法和 Promise.resolve() 方法类似,它用来创建一个 Promise 对象,并直接设置该对象的状态为 Rejected,同时还可以传递一个错误对象作为参数。
总结
以上就是 Promise 对象的基本使用与进阶应用。在实际的开发中,Promise 对象是非常常用的异步编程解决方案,灵活运用 Promise 对象可以提高代码的可读性和可维护性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65a0c7a8add4f0e0ff8fe7a9