最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Promise對(duì)象all與race方法手寫示例

 更新時(shí)間:2022年12月11日 10:13:28   作者:大眼睛圖圖  
這篇文章主要為大家介紹了Promise對(duì)象all與race方法手寫示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言

在理解了手寫promsie.then的方法后,再來看它的其他方法,感覺真的簡(jiǎn)單了不少。

Promise.all

介紹

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

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

上面代碼中,Promise.all()方法接受一個(gè)數(shù)組作為參數(shù),p1、p2、p3都是 Promise 實(shí)例。另外,Promise.all()方法的參數(shù)可以不是數(shù)組,但必須具有 Iterator 接口,且返回的每個(gè)成員都是 Promise 實(shí)例。

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

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

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

手寫

  • 返回一個(gè)Promsie對(duì)象
const promiseAll = (array) => {
    return new Promise((resolve, reject) => {
    })
}
  • 判斷傳入的是數(shù)組
const promiseAll = (array) => {
    if (!Array.isArray(array)) {
        throw new Error('要傳入數(shù)組')
    }
    return new Promise((resolve, reject) => {
    }
}
  • 遍歷數(shù)組,再判斷數(shù)組中每個(gè)元素是否為Promsie對(duì)象的實(shí)例,并對(duì)此分情況處理
const promiseAll = (array) => {
    if (!Array.isArray(array)) {
        throw new Error('要傳入數(shù)組')
    }
    return new Promise((resolve, reject) => {
        let result = [];
        array.forEach((item, index) => {
            if (item instanceof Promise) {
                item.then(res => {
                    result[index] = res
                },
                    err => { return reject(err) })
            } else {
                result[index] = item
            }
        })
    })
}
  • 設(shè)置一個(gè)計(jì)數(shù)器count,當(dāng)遍歷完了所有數(shù)組里面的值,就把result數(shù)組打印出來
const promiseAll = (array) => {
    if (!Array.isArray(array)) {
        throw new Error('要傳入數(shù)組')
    }
    return new Promise((resolve, reject) => {
        let result = [];
        let count = 0;
        array.forEach((item, index) => {
            if (item instanceof Promise) {
                item.then(res => {
                    result[index] = res
                    count++;
                    if (count == array.length) {
                        return resolve(result)
                    }
                },
                    err => { return reject(err) })
            } else {
                result[index] = item
                count++;
                if (count == array.length) {
                    return resolve(result)
                }
            }
        })
    })
}

Promise.race

介紹

Promise.race()方法同樣是將多個(gè) Promise 實(shí)例,包裝成一個(gè)新的 Promise 實(shí)例。

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

上面代碼中,只要p1、p2p3之中有一個(gè)實(shí)例率先改變狀態(tài),p的狀態(tài)就跟著改變。那個(gè)率先改變的 Promise 實(shí)例的返回值,就傳遞給p的回調(diào)函數(shù)。

手寫

  • 返回一個(gè)Promise對(duì)象
let promiseRace = (array) => {
    return new Promise((resolve, reject) => {
    })
}
  • 判斷傳入的參數(shù)是否為數(shù)組
let promiseRace = (array) => {
    if (!Array.isArray(array)) {
        throw new Error('要返回?cái)?shù)組')
    }
    return new Promise((resolve, reject) => {
    })
}
  • 遍歷數(shù)組,再判斷數(shù)組中每個(gè)元素是否為Promsie對(duì)象的實(shí)例,再對(duì)此分情況處理
let promiseRace = (array) => {
    if (!Array.isArray(array)) {
        throw new Error('要返回?cái)?shù)組')
    }
    return new Promise((resolve, reject) => {
        array.forEach((item) => {
            if (item instanceof Promise) {
                item.then(res => {
                    return resolve(res)
                },
                    err => reject(err))
            } else {
                return resolve(item)
            }
        })
    })
}

參考文檔

Promise 對(duì)象 - Promise.any()

以上就是Promise對(duì)象all與race方法手寫示例的詳細(xì)內(nèi)容,更多關(guān)于Promise對(duì)象all race方法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • javascript中xml操作實(shí)現(xiàn)代碼

    javascript中xml操作實(shí)現(xiàn)代碼

    好久沒寫了。感覺今時(shí)今日,HTML5 還依然只是一種玩票的東東。但愿 w3c 的標(biāo)準(zhǔn)可以早一點(diǎn)出臺(tái),不要讓各種瀏覽器的兼容問題和支持程度搞死
    2011-11-11
  • JavaScript實(shí)現(xiàn)網(wǎng)頁(yè)動(dòng)態(tài)生成表格

    JavaScript實(shí)現(xiàn)網(wǎng)頁(yè)動(dòng)態(tài)生成表格

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)網(wǎng)頁(yè)動(dòng)態(tài)生成表格,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 非常不錯(cuò)的[JS]Cookie精通之路

    非常不錯(cuò)的[JS]Cookie精通之路

    Cookies,有些人喜歡它們,有些人憎恨它們。但是,很少有人真正知道如何使用它們。現(xiàn)在你可以成為少數(shù)人中的成員-可以自傲的 Cookie 大師。
    2008-06-06
  • 制作微信小程序的小白簡(jiǎn)單入門教程

    制作微信小程序的小白簡(jiǎn)單入門教程

    這篇文章主要介紹了制作微信小程序的小白簡(jiǎn)單入門教程。本文就是小程序?qū)W習(xí)筆記,整理成教程的形式,希望對(duì)于初學(xué)者有用。需要學(xué)會(huì)的主要知識(shí)點(diǎn)都會(huì)講到,目標(biāo)是你讀完這個(gè)教程,就能學(xué)會(huì)怎么寫小程序。
    2022-12-12
  • javascript如何動(dòng)態(tài)加載表格與動(dòng)態(tài)添加表格行

    javascript如何動(dòng)態(tài)加載表格與動(dòng)態(tài)添加表格行

    在某些時(shí)候需要?jiǎng)討B(tài)加載表格與動(dòng)態(tài)添加表格行,在接下來的文章中將為大家介紹下javascript是如何做到的,感興趣的朋友不要錯(cuò)過
    2013-11-11
  • JavaScript實(shí)現(xiàn)瀑布流圖片效果

    JavaScript實(shí)現(xiàn)瀑布流圖片效果

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)瀑布流圖片效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 詳解使用Next.js構(gòu)建服務(wù)端渲染應(yīng)用

    詳解使用Next.js構(gòu)建服務(wù)端渲染應(yīng)用

    這篇文章主要介紹了詳解使用Next.js構(gòu)建服務(wù)端渲染應(yīng)用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-07-07
  • web頁(yè)面和微信小程序頁(yè)面實(shí)現(xiàn)瀑布流效果

    web頁(yè)面和微信小程序頁(yè)面實(shí)現(xiàn)瀑布流效果

    這篇文章主要介紹了web頁(yè)面和微信小程序頁(yè)面實(shí)現(xiàn)瀑布流效果,本文通過實(shí)例代碼圖文介紹,給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2018-09-09
  • jQuery和JavaScript節(jié)點(diǎn)插入元素的方法對(duì)比

    jQuery和JavaScript節(jié)點(diǎn)插入元素的方法對(duì)比

    本文主要介紹jQuery與JavaScript節(jié)點(diǎn)的插入方法,以及他們的具體代碼實(shí)現(xiàn)方法,大家可以對(duì)比下他們之間的不同,希望對(duì)大家編寫代碼有所幫助
    2016-11-11
  • 原生JS實(shí)現(xiàn)記憶翻牌游戲

    原生JS實(shí)現(xiàn)記憶翻牌游戲

    這篇文章主要為大家詳細(xì)介紹了原生JS實(shí)現(xiàn)記憶翻牌游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07

最新評(píng)論

宕昌县| 锡林郭勒盟| 沙雅县| 平塘县| 昌图县| 桓台县| 曲松县| 讷河市| 康平县| 平山县| 墨竹工卡县| 宁明县| 林州市| 海伦市| 双鸭山市| 衡水市| 宁城县| 五台县| 龙里县| 昂仁县| 左贡县| 武宣县| 阳东县| 嵊泗县| 高平市| 三穗县| 保康县| 新余市| 漠河县| 镇坪县| 天全县| 常州市| 综艺| 祁东县| 高尔夫| 博兴县| 安西县| 鄢陵县| 西畴县| 明溪县| 皋兰县|