Promise.all()
中的Promise
序列会全部执行通过才认为是成功,否则认为是失败;
无论是上传图片还是下载图片,都是异步操作,此时,我们可以将这两个常见交互变成了一个Promise
操作,为了简化理解,整个异步过程我们就使用定时器代替,示意如下:
const upload = function (blob) {
let time = Math.round(100 + 500 * Math.random());
return new Promise((resolve, reject) => {
// 是否执行测试
console.log(`run ${time}ms`);
// 成功失败概率50%
if (Math.random() > 0.5) {
setTimeout(resolve, time, 'promise resolved ' + time + 'ms');
} else {
setTimeout(reject, time, 'promise rejected ' + time + 'ms');
}
});
};
1.Promise.all()
Promise.all()
里面所有可迭代的Promise都通过则认为是成功,如果有一个拒绝,则认为失败。
(async () => {
try {
let result = await Promise.all([upload(0), upload(1), upload(2)]);
console.log(result);
} catch (err) {
console.error(err);
}
})();
只有3个upload
方法都resolve
通过才会认为成功,否则返回第一个出错的提示结构,如下截图所示:
网友评论