1:promise.all(a,b)——會將a,b的參數都一起返回(所用時間為a+b)
2:promise.race(a,b)——會將定時器時間執行時間短的參數返回
把以下代碼放在調試工具,看打印結果的先后順序,以及打印時間就能明白了
const moviePromise = new Promise((reslove, reject) => { setTimeout(() => { reslove({ name: '摔跤吧!爸爸', rating: 9.2, year: 2016 }) }, 2000); }) const usersPromise = new Promise((resolve, reject) => { setTimeout(() => { resolve(['mojobo', 'vanpelt', 'wycats']); }, 1000); }) // all的方法為兩者promised都為reslove,才執行then的內容 // 但是如果其中一個promise的返回結果為reject,執行catch里的內容 Promise.all([moviePromise, usersPromise]).then(resposes => { console.log(resposes,'1'); // resposes為一個為對象,一個為數組 }).catch(error => { console.error(error,'2'); }); // race方法執行的結果由第一個promise的結果來決定的, // 遇到reject就直接執行catch,遇到resolve就直接執行then Promise.race([moviePromise, usersPromise]).then(resole => { // 如果 moviePromise 返回的是reject內容,usersPromise為resolve // 返回的resole為一個數組。因為先執行為usersPromise // 如果 usersPromise 返回的是reject內容,usersPromise返回是第一個,注意執行毫秒。 //moviePromise 為resolve // 應該執行catch的內容 console.log(resole,'3'); }).catch(error => { console.error(error,'4'); })