前言
在 Web 前端开发中,异步编程是非常常见的。ES6 Promise 是一种可靠地解决 JavaScript 异步编程的方法,并经过了标准化的 Promise A+ 规范。这篇文章将会详细介绍 ES6 Promise,并为大家提供足够的样例代码来帮助大家更好地理解。
Promise 的基本概念
Promise 是一种代表异步操作最终完成或失败的对象。通俗地说,Promise 对象表示一个异步操作的最终完成,或者最终失败。可以使用 Promise.resolve(value)
或者 Promise.reject(reason)
来得到一个完成或失败的 Promise 对象。
Promise 有 3 个状态:
Pending
(进行中)Fulfilled
(已成功)Rejected
(已失败)
当一个 Promise 从 Pending
状态转变成 Fulfilled
或 Rejected
时,就称为 Promise 被 settled
。
Promise 的基本用法
-- -------------------- ---- ------- -- ---- ----- ------- - --- ----------------- ------- -- - -- ---------- -- -------- --------------- -- -------- --------------- --- ------------- ------- -- - -- ---- ------------------- -- -------- -- - -- ---- -------------------- - --展开代码
Promise 链式调用
Promise 链式调用可以让异步操作按顺序依次执行。
-- -------------------- ---- ------- ----- ------- - --- ----------------- ------- -- - ---------------- --- ------- ------------- -- - ------------------- ------ ----- - ------ -- ------------- -- - ------------------- ------ ----- - ------ -- ------------- -- - ------------------- ---展开代码
在 Promise 链式调用中,每个 .then()
方法返回的都是 Promise 对象,所以可以使用 .then()
方法实现异步操作的串联或并联。
Promise 的常见操作
Promise.all()
Promise.all() 可以将多个 Promise 对象组合成一个新的 Promise 对象,这个新的 Promise 对象将在所有的 Promise 对象都已经成功被 settled
时,自动转化为 Fulfilled 状态。
const promise1 = Promise.resolve("Hello"); const promise2 = Promise.resolve("World"); const promise3 = Promise.resolve("!"); Promise.all([promise1, promise2, promise3]).then((values) => { console.log(values); // [ 'Hello', 'World', '!' ] });
如果其中有任何一个 Promise 被 Reject,则整个 Promise.all() 被 Reject。
Promise.race()
Promise.race() 可以将多个 Promise 对象组合成一个新的 Promise 对象,这个新的 Promise 对象将在其中任意一个 Promise 对象被 settled
时,自动转化为 Fulfilled 或 Rejected 状态。
-- -------------------- ---- ------- ----- -------- - --- ----------------- ------- -- ------------------- ---- ------ -- ----- -------- - --- ----------------- ------- -- ------------------- ---- ------ -- ----------------------- ----------------------- -- - ------------------- -- ----- ---展开代码
Promise.finally()
Promise.finally() 方法可以在 Promise 对象被 resolved
或 rejected
后,执行指定的回调函数。与 .then()
和 .catch()
不同,finally()
没有参数,只是在 Promise 对象对象完成后,执行回调函数。
-- -------------------- ---- ------- ------- -------------- -- - ------ ------- -- -------------- -- - ------ ------ -- ----------- -- - -------------------- ------------- ---展开代码
总结
通过本文对 ES6 Promise 的详细介绍,我们学习到了 Promise 的基本概念、基本用法以及常见操作。掌握 Promise 非常重要,它可以使得异步编程更为流畅美妙。希望本文可以为大家学习 ES6 Promise 提供帮助并带来指导意义。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/653458327d4982a6eb899648