JavaScript Day25 - Promise(2)

Promise

  • Promise.all():等待里面的都完成才回传,因为是全部完成,所以会是阵列,失败就是回传失败那个
  • Promise.race():等待里面的第一笔完成就回传

Promise 例子

// 有机率失败
function test1 (name, time){
    return new Promise((resolve, reject)=>{
    setTimeout(()=>{
        if(Math.random() > 0.5){
            resolve(`${name}: success`)
        }
        else{
            reject(`${name}: error`)
        }
    }, time)
    })
}

// 一定成功
function test2 (name, time){
    return new Promise((resolve, reject)=>{
    setTimeout(()=>{
        if(true){
            resolve(`${name}: success`)
        }
        else{
            reject(`${name}: error`)
        }
    }, time)
    })
}

Promise.all

// 有机率失败
Promise.all([test1('a',1000),test1('b',2000),test1('c',3000)]).then((data)=>{
    console.log(data);
}).catch((error)=>{
    console.log(error);
})
// 成功回传 ['a: success', 'b: success', 'c: success']
// 失败回传 a: error or b: error or c: error 其中一种

// 一定成功
Promise.all([test2('a',1000),test2('b',2000),test2('c',3000)]).then((data)=>{
    console.log(data);
}).catch((error)=>{
    console.log(error);
})
// 成功回传 ['a: success', 'b: success', 'c: success']

Promise.race

// 有机率失败
Promise.race([test1('a',1000),test1('b',2000),test1('c',3000)]).then((data)=>{
    console.log(data);
}).catch((error)=>{
    console.log(error);
})
// 成功回传 a: success
// 失败回传 a: error

参考资料

MDN 使用 Promise
MDN Promise
铁人赛:使用 Promise 处理非同步
JavaScript Promise 全介绍
JS 原力觉醒 Day14 - 一生悬命的约定:Promise
JavaScript基本功修练:Day25 - Promise
从Promise开始的JavaScript异步生活
Promise 与 Opendata
JavaScript 同步延迟 ( Promise + setTimeout )
JavaScript | 从Promise开始承诺的部落格生活

次回

再稍微 Promise 一下


<<:  Day26 如何使用bootstrap

>>:  Day25 ATT&CK for ICS - Collection(1)

DAY 13 接下来的实作

接下来的天数,预计要来实作上面已经教学的 sass 方法,毕竟学习是一回事,真正拿来实作则是另一回事...

Day 29 : 第一个无线智慧装置

网页服务器 学习了快一个月後总算可以来撰写无线的智慧装置, 相信利用这些技术肯定能提升你的育儿体验,...

如何衡量万事万物 (3) 厘清问题 & 量化不确定性

衡量前的议题 这项衡量要支援什麽决策? 要衡量的事物,若用可观察到的结果来定义,会是什麽? 这个事物...

[DAY 10] Pytorch 简介

前言 在开始进入我们各式各样的深度模型之前,我们要先来介绍一个非常 Powerful 的 Deep ...

DAY9-JAVA的类别(3)-多载

多载 利用JAVA中的多载,就不需要这麽多的函数来做相同的工作! 那多载到底是什麽呢?其实就是指相同...