Promise.all()和Promise.allSettled()有什么区别?
时间: 2023-11-16 19:59:55 浏览: 93
像Promise.all(array)一样,但是带有一个对象而不是一个数组。-JavaScript开发
Promise.all()和Promise.allSettled()都是用于处理多个Promise实例的方法,但它们有一些区别。
Promise.all()方法接受一个Promise实例数组作为参数,只有当所有的Promise实例都变成fulfilled状态时,Promise.all()返回的Promise实例才会变成fulfilled状态,并将所有Promise实例的返回值组成一个数组传递给回调函数。如果其中任何一个Promise实例变成rejected状态,Promise.all()返回的Promise实例就会变成rejected状态,并将第一个被rejected的Promise实例的返回值传递给回调函数。
而Promise.allSettled()方法也接受一个Promise实例数组作为参数,但它会等待所有的Promise实例都返回结果,不管是fulfilled还是rejected,包装实例才会结束。返回的Promise实例的状态总是fulfilled,它的返回值是一个数组,数组中的每个元素都是一个对象,对象有两个属性:status和value。status表示Promise实例的状态,value表示Promise实例的返回值。这样,即使其中一个Promise实例被rejected,也不会影响其他Promise实例的返回值。
阅读全文