国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【ES6】Promise.all用法

這篇具有很好參考價值的文章主要介紹了【ES6】Promise.all用法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Promise.all()方法用于將多個 Promise 實例,包裝成一個新的 Promise 實例。

const p = Promise.all([p1, p2, p3]);

上面代碼中,Promise.all()方法接受一個數(shù)組作為參數(shù),p1、p2、p3都是 Promise 實例,如果不是,就會先調(diào)用下面講到的Promise.resolve方法,將參數(shù)轉(zhuǎn)為 Promise 實例,再進一步處理。另外,Promise.all()方法的參數(shù)可以不是數(shù)組,但必須具有 Iterator 接口,且返回的每個成員都是 Promise 實例。

p的狀態(tài)由p1、p2、p3決定,分成兩種情況。

(1)只有p1、p2、p3的狀態(tài)都變成fulfilled,p的狀態(tài)才會變成fulfilled,此時p1、p2、p3的返回值組成一個數(shù)組,傳遞給p的回調(diào)函數(shù)。

(2)只要p1、p2、p3之中有一個被rejected,p的狀態(tài)就變成rejected,此時第一個被reject的實例的返回值,會傳遞給p的回調(diào)函數(shù)。

下面示例:

1、給各個promise添加catch
   let x = 10;

    let p1 = new Promise((resolve) => {
        resolve("p1 hello" + x);
    })
        .then((res) => {
            console.log(`p1 then 輸出${res}`);
            return res;
        })
        .catch((e) => {
            console.log("p1 報錯了");
            console.log(e);
        });

    let p2 = new Promise((resolve) => {
        resolve("p2 hello" + x);
    })
        .then((res) => {
            console.log(`p2 then 輸出${res}`);
            return res;
        })
        .catch((e) => {
            console.log("p2 報錯了");
            console.log(e);
        });

    let p3 = new Promise((resolve) => {
        resolve("p3 hello" + x);
    })
        .then((res) => {
            console.log(`p3 then 輸出${res}`);
            return res;
        })
        .catch((e) => {
            console.log("p3 報錯了");
            console.log(e);
        });

    let p4 = new Promise((resolve) => {
        resolve("p4 hello" + x);
    })
        .then((res) => {
            console.log(`p4 then 輸出${res}`);
            return res;
        })
        .catch((e) => {
            console.log("p4 報錯了");
            console.log(e);
        });

    Promise.all([p1, p2, p3, p4])
        .then(result => console.log(result))
        .catch((e) => {
            console.log("f*cking man 報錯了");
            console.log(e);
        });

輸出:
【ES6】Promise.all用法,前端,es6,javascript

2、去掉變量x,會報異常,各個Promise中的catch捕捉到對應(yīng)的異常, Promise.all中的catch不起效:
  // let x = 10;

    let p1 = new Promise((resolve) => {
        resolve("p1 hello" + x);
    })
        .then((res) => {
            console.log(`p1 then 輸出${res}`);
            return res;
        })
        .catch((e) => {
            console.log("p1 報錯了");
            console.log(e);
        });

    let p2 = new Promise((resolve) => {
        resolve("p2 hello" + x);
    })
        .then((res) => {
            console.log(`p2 then 輸出${res}`);
            return res;
        })
        .catch((e) => {
            console.log("p2 報錯了");
            console.log(e);
        });

    let p3 = new Promise((resolve) => {
        resolve("p3 hello" + x);
    })
        .then((res) => {
            console.log(`p3 then 輸出${res}`);
            return res;
        })
        .catch((e) => {
            console.log("p3 報錯了");
            console.log(e);
        });

    let p4 = new Promise((resolve) => {
        resolve("p4 hello" + x);
    })
        .then((res) => {
            console.log(`p4 then 輸出${res}`);
            return res;
        })
        .catch((e) => {
            console.log("p4 報錯了");
            console.log(e);
        });

    Promise.all([p1, p2, p3, p4])
        .then(result => console.log(result))
        .catch((e) => {
            console.log("f*cking man 報錯了");
            console.log(e);
        });

輸出結(jié)果:
【ES6】Promise.all用法,前端,es6,javascript

3、去掉各個promise的catch:
    // let x = 10;

    let p1 = new Promise((resolve) => {
        resolve("p1 hello" + x);
    })
        .then((res) => {
            console.log(`p1 then 輸出${res}`);
            return res;
        });

    let p2 = new Promise((resolve) => {
        resolve("p2 hello" + x);
    })
        .then((res) => {
            console.log(`p2 then 輸出${res}`);
            return res;
        });

    let p3 = new Promise((resolve) => {
        resolve("p3 hello" + x);
    })
        .then((res) => {
            console.log(`p3 then 輸出${res}`);
            return res;
        });

    let p4 = new Promise((resolve) => {
        resolve("p4 hello" + x);
    })
        .then((res) => {
            console.log(`p4 then 輸出${res}`);
            return res;
        });

    Promise.all([p1, p2, p3, p4])
        .then(result => console.log(result))
        .catch((e) => {
            console.log("f*cking man 報錯了");
            console.log(e);
        });

輸出結(jié)果
【ES6】Promise.all用法,前端,es6,javascript文章來源地址http://www.zghlxwxcb.cn/news/detail-699590.html

到了這里,關(guān)于【ES6】Promise.all用法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • ES6---Promise對象

    前端的一個必學(xué)知識之一,Promise對象,是一種用來解決異步編程的方案 特點: 1.對象的狀態(tài)不受外界影響。 Promise對象代表一個異步操作,有三種狀態(tài): pending(進行中)、 fulfilled(已成功)和 rejected(已失?。?。 只有異步操作的結(jié)果,可以決定當(dāng)前是哪一種狀態(tài),任何其

    2024年02月08日
    瀏覽(19)
  • ES6 -   promise(1)

    ES6 - promise(1)

    今天決定對之前學(xué)過的一些前端的知識進行梳理和總結(jié),因為最近都是獨自承擔(dān)項目的開發(fā)與搭建,所以先從前后端交互的第一線axios來梳理,復(fù)習(xí)axios首先一定要先復(fù)習(xí)promise對象。 promise對象是ES6新引入的一個解決異步編程的方案。首先我們要知道前端比較常見的兩種異步編

    2024年02月08日
    瀏覽(30)
  • ES6 Promise 詳解

    ES6 Promise 詳解

    目錄 一、Promise基本介紹 二、Promise實現(xiàn)多次請求 ? ? ? ? 1.傳統(tǒng)Ajax方式實現(xiàn)多次請求 :? ? ? ? ? ? ? 1.1 json數(shù)據(jù)準(zhǔn)備 ? ? ? ? ? ? 1.2 JQuery操作Ajax ? ? ? ? 2.使用ES6新特性Promise方式?:? 三、Promise代碼重排優(yōu)化 ? ? ? ? 1.問題分析 :? ? ? ? ? 2.代碼優(yōu)化 :? ? ? ? ? ? ? 2

    2024年02月08日
    瀏覽(23)
  • ES6-10:Promise

    前端開發(fā)因為網(wǎng)絡(luò)交互的存在,產(chǎn)生了一種最常見的獨特場景——異步,即程序執(zhí)行的過程并非完全按照代碼的書寫順序執(zhí)行。異步編程的解決方法有①回調(diào)函數(shù)、②事件、③Promise、④觀察者對象; Promise是ES6提供的一種異步編程的一種解決方案。簡單來書就是一個容器,里

    2024年02月08日
    瀏覽(28)
  • 【ES6知識】Promise 對象

    【ES6知識】Promise 對象

    1.1 概述 Promise 對象用于表示一個異步操作的最終完成(或失?。┘捌浣Y(jié)果值。是異步編程的一種解決方案(可以解決回調(diào)地獄問題)。 一個 Promise 對象代表一個在這個 promise 被創(chuàng)建出來時不一定已知值的代理。它讓你能夠把異步操作最終的成功返回值或者失敗原因和相應(yīng)的

    2024年02月07日
    瀏覽(26)
  • ES6基礎(chǔ)知識六:你是怎么理解ES6中 Promise的?使用場景?

    ES6基礎(chǔ)知識六:你是怎么理解ES6中 Promise的?使用場景?

    一、介紹 Promise,譯為承諾,是異步編程的一種解決方案,比傳統(tǒng)的解決方案(回調(diào)函數(shù))更加合理和更加強大 在以往我們?nèi)绻幚矶鄬赢惒讲僮鳎覀兺鶗裣旅婺菢泳帉懳覀兊拇a 閱讀上面代碼,是不是很難受,上述形成了經(jīng)典的回調(diào)地獄 現(xiàn)在通過Promise的改寫上面的

    2024年02月15日
    瀏覽(22)
  • 【ES6】fetch函數(shù)和Promise

    fetch函數(shù)是現(xiàn)代JavaScript中用于發(fā)起HTTP請求的一個非常強大的工具。它返回一個Promise,這個Promise在請求成功時解析為Response對象,或者在請求失敗時拒絕。 以下是一個基本的fetch使用示例: 在這個例子中,我們首先向https://api.example.com/data發(fā)起一個GET請求。然后,我們檢查響應(yīng)

    2024年02月09日
    瀏覽(22)
  • ES6 Promise/Async/Await使用

    Promise應(yīng)用 在工作中, 我們經(jīng)常會遇到用異步請求數(shù)據(jù), 查詢一個結(jié)果, 然后把返回的參數(shù)放入到下一個執(zhí)行的異步函數(shù)像這樣: 當(dāng)我們使用Promise后, 我們的程序就變成了這樣: 控制臺輸出如下: async/await應(yīng)用 看是不是簡潔很多了, 如果你不想使用這種鏈?zhǔn)秸{(diào)用, 也可以結(jié)合async/

    2024年02月12日
    瀏覽(21)
  • 你是怎么理解ES6中 Promise的?使用場景?

    你是怎么理解ES6中 Promise的?使用場景?

    Promise ,譯為承諾,是異步編程的一種解決方案,比傳統(tǒng)的解決方案(回調(diào)函數(shù))更加合理和更加強大 在以往我們?nèi)绻幚矶鄬赢惒讲僮?,我們往往會像下面那樣編寫我們的代碼 閱讀上面代碼,是不是很難受,上述形成了經(jīng)典的回調(diào)地獄 現(xiàn)在通過 Promise 的改寫上面的代碼 瞬

    2024年03月15日
    瀏覽(23)
  • ES6-2:Iterator、Proxy、Promise、生成器函數(shù)...

    ES6-2:Iterator、Proxy、Promise、生成器函數(shù)...

    打印出的是里面的內(nèi)容,如果是for in打印出來的是索引,of不能遍歷對象 Symbol.iterator是js內(nèi)置的,可以訪問直接對象arr[Symbol.iterator],()調(diào)用 對象非線性一般不能迭代 后兩個是偽數(shù)組,但是是真迭代器接口 類似于數(shù)組,但成員的值都是唯一的,沒有重復(fù) 與數(shù)組不同的是set沒有

    2024年04月11日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包