Promise.all
时间: 2023-10-28 21:01:00 浏览: 112
Promise Promise.all 的使用
Promise.all方法是将多个Promise实例包装成一个新的Promise实例,并且在所有异步操作执行完后才执行回调。它接受一个数组作为参数,数组中的每个成员都是一个Promise实例。如果参数不是数组,但具有Iterator接口且返回的每个成员都是Promise实例,也可以作为参数传入。
当作为参数的Promise实例中有一个被rejected时,Promise.all方法会立即返回一个rejected状态的Promise实例,并且不会触发Promise.all的catch方法。如果作为参数的Promise实例自己定义了catch方法,它一旦被rejected,也不会触发Promise.all的catch方法。
例如,如果有两个Promise实例p1和p2,其中p1返回了一个resolve的结果"hello",而p2抛出了一个错误。使用Promise.all([p1, p2]),会返回一个新的Promise实例。如果所有的Promise实例都是resolve状态,那么新的Promise实例的回调参数将会是一个包含所有Promise实例resolve结果的数组,即["hello", Error: 报错了]。如果其中有一个Promise实例被rejected,那么新的Promise实例会立即被rejected,并返回该rejected实例的值。
阅读全文