美文网首页
Promise.all

Promise.all

作者: zhao_ran | 来源:发表于2021-05-11 22:13 被阅读0次

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通过才会认为成功,否则返回第一个出错的提示结构,如下截图所示:

相关文章

网友评论

      本文标题:Promise.all

      本文链接:https://www.haomeiwen.com/subject/qzandltx.html