promiseall的用法
Promise.all()方法用于将多个Promise实例,包装成一个新的Promise实例。
Promise.all()方法接受一个数组作为参数,其中的每一个元素可以是 Promise 对象或者是一般值(stream、eventEmitter)。
当 Promise.all()方法接受到的所有参数都变为resolved状态,它才会将Promise状态转变为resolved,并将返回值作为回调函数的参数返回,即返回的结果值的顺序跟数组参数的顺序一致。如果传入的参数中有一个Promise被rejected,那么Promise.all()的状态也会变为rejected,此时第一个被reject的实例的返回值,会传递给Promise.all()的回调函数。
我们可以使用Promise.all()方法用来并行加载多个资源和异步操作,并行处理结果且支持重试,可以更快地完成任务。
实例:
下面的例子中我们使用Promise实例模拟三个用户请求,一个请求一分钟,当三个请求全部完成(3个Promise实例都变成resolved状态),输出“三个用户的请求完成了”。
const p1 = new Promise((resolve, reject) => {
resolved是什么状态 setTimeout(() => {
resolve('用户1请求完成!');
}, 2000);
});
上面的例子中,三个请求是串行执行的,p1、p2、p3三个Promise实例会同时开始执行,当所有Promise实例完成时(成功/失败),then方法中的代码才会执行。
Promise.all()可以将多个 Promise 实例包装成一个新的 Promise 实例。在 Promise 异步代码开发中,Promise.all()方法避免了我们编写多个 then() 方法,以便将多个 Promise 的结果放到相应的处理函数里,让我们的代码更清晰、更优雅,大大提高了开发效率。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论