ES6 引入了 Promise 对象,它是一种用于异步编程的解决方案。Promise 对象代表一个异步操作的最终完成或失败,并返回相应的结果。使用 Promise 可以更清晰、更容易地处理异步代码,避免了回调地狱(callback hell)。

以下是 Promise 的基本用法:

1. 创建 Promise 对象:
   使用 Promise 构造函数可以创建一个新的 Promise 对象。这个构造函数接受一个执行器函数,该函数有两个参数 resolve 和 reject,分别表示异步操作成功和失败时的回调。
   const myPromise = new Promise((resolve, reject) => {
     // 异步操作,成功时调用 resolve,失败时调用 reject
     // 例如:模拟异步操作,1 秒后将状态设置为成功
     setTimeout(() => {
       resolve('Operation succeeded!');
     }, 1000);
   });

2. 处理 Promise 的状态:
   Promise 有三种状态:pending(进行中)、fulfilled(已成功)和 rejected(已失败)。一旦状态改变,就会调用相应的回调函数。
   myPromise.then(
     // 处理成功状态
     (result) => {
       console.log(result); // 输出: Operation succeeded!
     },
     // 处理失败状态
     (error) => {
       console.error(error);
     }
   );

3. Promise 链:
   Promise 可以通过 .then() 方法链式调用,可以处理异步操作的结果,也可以返回一个新的 Promise 对象。
   const promiseChain = myPromise.then((result) => {
     console.log(result); // 输出: Operation succeeded!
     return 'New result';
   });

   promiseChain.then((newResult) => {
     console.log(newResult); // 输出: New result
   });

4. Promise.all 和 Promise.race:
   Promise.all 可以接收一个包含多个 Promise 的数组,只有所有 Promise 都成功时才返回成功,否则返回失败。Promise.race 则是只要有一个 Promise 完成就返回,无论是成功还是失败。
   const promise1 = Promise.resolve(1);
   const promise2 = Promise.resolve(2);

   Promise.all([promise1, promise2])
     .then((results) => {
       console.log(results); // 输出: [1, 2]
     });

   Promise.race([promise1, promise2])
     .then((result) => {
       console.log(result); // 输出: 1
     });

Promise 提供了一种更清晰且强大的处理异步操作的方式,使得代码更易于理解和维护。在现代 JavaScript 中,Promise 已成为处理异步编程的标准手段之一。


转载请注明出处:http://www.zyzy.cn/article/detail/4676/ES6