function request(name, count = 0) {
return new Promise((resolve, reject) => {
const isSuccess = Math.random() > 0.5;
console.log(`接口${name}: ${isSuccess}`);
setTimeout(() => {
isSuccess > 0.5 ? resolve(name) : reject(name);
}, Math.random() * 1000);
}).catch((err) => {
count++;
if (count > 2) {
return Promise.reject(`后端大爷${name}接口写的666`);
}
return request(name, count);
});
}
let queue = [request('A'), request('B'), request('C'), request('D'), request('E'), request('F'), request('G'), request('H')];
Promise.all(queue)
.then((arr) => {
console.log(arr);
})
.catch((err) => {
console.log(err);
});