随着 JavaScript 的普及和发展,越来越多的开发者开始关注 ECMAScript 新特性。在 ECMAScript 2021 中,我们迎来了一个新的 Promise 方法:Promise.allSettled()。
Promise.allSettled() 方法可以让我们更加方便地处理一组 Promise 实例,它会返回一个 Promise,当这组 Promise 实例都执行完毕后,该 Promise 实例会 resolve,返回一个数组,数组中的每个元素都是一个对象,代表一个 Promise 实例的执行结果,包括其状态(fulfilled 或 rejected)和结果。
Promise.allSettled() 方法的语法
Promise.allSettled(iterable)
其中,iterable 表示一个可迭代对象,比如数组或者 Set。
Promise.allSettled() 方法的示例代码
const promise1 = Promise.resolve(1); const promise2 = Promise.reject('error'); const promise3 = Promise.resolve(3); Promise.allSettled([promise1, promise2, promise3]) .then(results => console.log(results));
上述代码中,我们定义了三个 Promise 实例,分别代表一个成功的 Promise、一个失败的 Promise 和一个成功的 Promise。我们将这三个 Promise 实例作为参数传递给 Promise.allSettled() 方法,并在 then 方法中输出返回结果。
运行上述代码,我们可以看到控制台输出以下结果:
[ { status: 'fulfilled', value: 1 }, { status: 'rejected', reason: 'error' }, { status: 'fulfilled', value: 3 } ]
可以看到,Promise.allSettled() 方法返回了一个数组,数组中包含了每个 Promise 实例的执行结果,包括其状态和结果。
Promise.allSettled() 方法的指导意义
Promise.all() 方法是处理一组 Promise 实例的标准方式,但是它有一个缺点,即只要其中一个 Promise 实例执行失败,就会立即返回一个 rejected 状态的 Promise 实例,导致其他 Promise 实例的执行结果被忽略。
Promise.allSettled() 方法则不同,它会等待所有 Promise 实例都执行完毕后,返回一个 resolved 状态的 Promise 实例,同时返回每个 Promise 实例的执行结果。这为我们处理一组 Promise 实例提供了更多的灵活性和可控性。
总结
在 ECMAScript 2021 中,Promise.allSettled() 方法成为了一个新的 Promise 方法,它可以让我们更加方便地处理一组 Promise 实例,返回每个 Promise 实例的执行结果,包括其状态和结果。Promise.allSettled() 方法的出现为我们处理一组 Promise 实例提供了更多的灵活性和可控性,值得我们在实际开发中加以应用。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6617451ed10417a2227148ff