实现Promise.all 方法

实现Promise.all 方法

1.Promise.all() 方法执行完成之后还是返回一个 promise对象 所以封装方法的时候必须最终返回一个promise对象

function promiseAll(arrayPromise){
	return new Promise((resolve,reject)=>{
		
	})
}

2.传入Promise.all方法内的promise数组内所有执行完成最终耗时为最长耗时的promise,所以可以知道内部应该是promise数组内的方法都是异步执行的,并且最终返回的结果是一个按传入promise数组顺序的promise结果,还需要知道的是 只要其中一个 报错那么 就会 视作失败。

function promiseAll(arrayPromise){
	return new Promise((resolve,reject)=>{
		const array = []; //最终返回的数组
		let count = 0;		 
		arrayPromise.forEach(async (promise,index)=>{
			array[index] = await promise().catch((err)=>{
				reject(err);     //只要其中一个 报错 那么 就抛出异常
			});
			count ++;
			if(count  === arrayPromise.length){  //结果数组长度 等于参数数组长度 并且无空 视作完成
				resolve(array);
			}
		})
	})
}
发布了96 篇原创文章 · 获赞 64 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_41709082/article/details/103293766