实现mergePromise函数,把传进去的数组顺序先后执行,并且把返回的数据先后放到数组data中

实现mergePromise函数,把传进去的数组顺序先后执行,并且把返回的数据先后放到数组data中.

const  asyncFun =  ms = > new Promise((resolve,reject)=>{
		//此处 用 setTimeout 模拟 异步操作
		setTimeout(()=>{
			resolve();
		},ms);
});
//asyncFun 最终 会 返回 一个 promise 对象 
const  fn1 = ()=>asyncFun(6000).then(()=>{
		console.log(1);
		return 1;
});

const fn2 = ()=> asyncFun(2000).then(()=>{
	console.log(2);
	return 2;
});

const fn3 = ()=> asyncFun(1000).then(()=>{
	console.log(3);
	return 3;
});

const mergePromise = asyncArray = >{
	return new Promise(resolve=>{
		let data = [];
		//启用 一个 promise 引用    Promise.resolve(value)方法返回一个以给定值解析后的Promise 对象
		let promise = Promise.resolve();
		asyncArray.forEach(asyncFun =>{
			promise = promise.then(asyncFun).then(res=>{
				data.push(res);
			});
		});
		return promise.then(()=>{
			resolve(data);
		})
	})
}

 mergePromise([fn1,fn2,fn3]).then(data=>{
	console.log('done');
	console.log(data);
})

//最终 打印出     
// 1
//  2
//  3
// done
//  [1,2,3]    

发布了96 篇原创文章 · 获赞 64 · 访问量 3万+

猜你喜欢

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