promise中all和race的區別


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');
        })

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM