当前位置:网站首页>Promise. All capture error

Promise. All capture error

2022-06-11 06:57:00 Xiaoman's code world

Promise.all By default, as long as there is an error, it will directly return the error .promise.all Any one of them promise When an error occurs, it will execute reject, As a result, other normally returned data cannot be used

Promise.all([
	Promise.resolve(1), 
	Promise.reject('err'), 
	Promise.resolve(2)
]).then(res => {
	console.log(res)
}).catch(err => {
	console.log('error', err)
})

//  The result returned to : error err

If our array has some errors but does not affect the return of other results , For each item promise Capture .

Promise.all([
	Promise.resolve(1), 
	Promise.reject('err'), 
	Promise.resolve(2)].map(item => {
		return item.catch(err => {
			console.log('item error', err)
		})
	})
).then(res => {
	console.log(res)
}).catch(err => {
	console.log('error', err)
})
//  The result returned to :
// item error err
//  [1, undefined, 2]

In this way, it can be realized that no matter what happens , It does not affect the return of the final result .

Promise.all Simplified practical principles

function promiseAll(promises){
    return new Promise((resolve,reject) => {
        if (!Array.isArray(promises)) {
            return reject(new TypeError("argument must be anarray"))
        }
        let countNum=0;
        let promiseNum=promises.length;
        let resolvedvalue=new Array(promiseNum);
        for (let i=0; i<promiseNum; i++) {
            Promise.resolve(promises[i]).then(value =>{
                countNum++;
                resolvedvalue[i]=value;
                if(countNum===promiseNum){
                    return resolve(resolvedvalue)
                }
            },reason => {
                return reject(reason)
            })
        }
    })
}
原网站

版权声明
本文为[Xiaoman's code world]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/03/202203020525053593.html