实现promise.all-小红书面试

题目

写一个promise.all方法的实现,可以使用原生的promise,不用实现promise。

解答

给一个最简单的实现,可能有很多漏考虑的情况,仅供参考:

Promise.prototype.allTest = function(promiseArr){
	const resAll = []; // 通过的promise
	const rejAll = []; // 失败的promise
	const endFlag = false; // 结束标识符
	return new Promise((resolve, reject) => {
		promiseArr.forEach( pItem => {
			pItem().then(res => {
				if(endFlag) return;
				res.push(res);
				if(res.length === promiseArr.length){
					resolve(res);
				}
			}, rej => {
				rejAll.push(rej);
				endFlag = true;
				reject(rejAll);
			})
		});
	})
}

你有好的实现方法,欢迎贴到评论区!



请遵守《互联网环境法规》文明发言,欢迎讨论问题
扫码反馈

扫一扫,反馈当前页面

咨询反馈
扫码关注
返回顶部