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

JavaScript同步異步處理Promise的常用方法

 更新時(shí)間:2025年06月17日 08:41:14   作者:星極天下第一  
Promise是JavaScript中用于異步處理的一種方式,一個(gè)Promise代表了一個(gè)可能會(huì)在將來(lái)完成的異步操作,這篇文章主要介紹了JavaScript同步異步處理Promise的常用方法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下

一、什么是Promise

一個(gè) Promise 是一個(gè)代理,它代表一個(gè)在創(chuàng)建 promise 時(shí)不一定已知的值。它允許你將處理程序與異步操作的最終成功值或失敗原因關(guān)聯(lián)起來(lái)。

二、Promise的三種狀態(tài)

  • 待定(pending):初始狀態(tài),既沒(méi)有被兌現(xiàn),也沒(méi)有被拒絕。
  • 已兌現(xiàn)(fulfilled):意味著操作成功完成。
  • 已拒絕(rejected):意味著操作失敗。

我們?cè)谑褂肞romise時(shí),可以用resolve, reject兩個(gè)函數(shù)來(lái)控制其狀態(tài),前者時(shí)通過(guò),后者是拒絕

三、用Promise處理并發(fā)的常用方法

1.Promise.all()

所有傳入的 Promise 都被兌現(xiàn)時(shí)兌現(xiàn);在任意一個(gè) Promise 被拒絕時(shí)拒絕。

案例展示:

(1)全部都通過(guò)

const promiseA = new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('promiseA')
        }, 500)
    })
    const promiseB = new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('promiseB')
        }, 1000)
    })
    const promiseC = new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('promiseC')
        }, 1500)
    })
    Promise.all([promiseA, promiseB, promiseC])
        .then(res => {
            console.log(res)
        })
        .catch(err => {
            console.log(err)
        })

結(jié)果:

(2)有一個(gè)拒絕

const promiseA = new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('promiseA')
        }, 500)
    })
    const promiseB = new Promise((resolve, reject) => {
        setTimeout(() => {
            reject('promiseB')
        }, 1000)
    })
    const promiseC = new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('promiseC')
        }, 1500)
    })
    Promise.all([promiseA, promiseB, promiseC])
        .then(res => {
            console.log(res)
        })
        .catch(err => {
            console.log(err)
        })

結(jié)果:

(3)全部被拒絕 

const promiseA = new Promise((resolve, reject) => {
        setTimeout(() => {
            reject('promiseA')
        }, 500)
    })
    const promiseB = new Promise((resolve, reject) => {
        setTimeout(() => {
            reject('promiseB')
        }, 1000)
    })
    const promiseC = new Promise((resolve, reject) => {
        setTimeout(() => {
            reject('promiseC')
        }, 1500)
    })
    Promise.all([promiseA, promiseB, promiseC])
        .then(res => {
            console.log(res)
        })
        .catch(err => {
            console.log(err)
        })

結(jié)果:

2.Promise.allSettled()

所有的 Promise 都被敲定時(shí)兌現(xiàn)。

案例展示:

(1)全部通過(guò)

const promiseA = new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('promiseA')
        }, 500)
    })
    const promiseB = new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('promiseB')
        }, 1000)
    })
    const promiseC = new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('promiseC')
        }, 1500)
    })
    Promise.allSettled([promiseA, promiseB, promiseC])
        .then(res => {
            console.log(res)
        })
        .catch(err => {
            console.log(err)
        })

結(jié)果:

(2)部分被拒絕

const promiseA = new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('promiseA')
        }, 500)
    })
    const promiseB = new Promise((resolve, reject) => {
        setTimeout(() => {
            reject('promiseB')
        }, 1000)
    })
    const promiseC = new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('promiseC')
        }, 1500)
    })
    Promise.allSettled([promiseA, promiseB, promiseC])
        .then(res => {
            console.log(res)
        })
        .catch(err => {
            console.log(err)
        })

 結(jié)果:

(3)全部被拒絕

const promiseA = new Promise((resolve, reject) => {
        setTimeout(() => {
            reject('promiseA')
        }, 500)
    })
    const promiseB = new Promise((resolve, reject) => {
        setTimeout(() => {
            reject('promiseB')
        }, 1000)
    })
    const promiseC = new Promise((resolve, reject) => {
        setTimeout(() => {
            reject('promiseC')
        }, 1500)
    })
    Promise.allSettled([promiseA, promiseB, promiseC])
        .then(res => {
            console.log(res)
        })
        .catch(err => {
            console.log(err)
        })

結(jié)果:

3.Promise.any()

任意一個(gè) Promise 被兌現(xiàn)時(shí)兌現(xiàn);僅在所有的 Promise 都被拒絕時(shí)才會(huì)拒絕。

案例展示:

(1)全部通過(guò)

    const promiseA = new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('promiseA')
        }, 5000)
    })
    const promiseB = new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('promiseB')
        }, 1000)
    })
    const promiseC = new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('promiseC')
        }, 1500)
    })
    Promise.any([promiseA, promiseB, promiseC])
        .then(res => {
            console.log(res)
        })
        .catch(err => {
            console.log(err)
        })

結(jié)果:

注意函數(shù)觸發(fā)時(shí)間

(2)部分不通過(guò)

const promiseA = new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('promiseA')
        }, 5000)
    })
    const promiseB = new Promise((resolve, reject) => {
        setTimeout(() => {
            reject('promiseB')
        }, 1000)
    })
    const promiseC = new Promise((resolve, reject) => {
        setTimeout(() => {
            reject('promiseC')
        }, 1500)
    })
    Promise.any([promiseA, promiseB, promiseC])
        .then(res => {
            console.log(res)
        })
        .catch(err => {
            console.log(err)
        })

結(jié)果:

(3)全部不通過(guò)

const promiseA = new Promise((resolve, reject) => {
        setTimeout(() => {
            reject('promiseA')
        }, 500)
    })
    const promiseB = new Promise((resolve, reject) => {
        setTimeout(() => {
            reject('promiseB')
        }, 1000)
    })
    const promiseC = new Promise((resolve, reject) => {
        setTimeout(() => {
            reject('promiseC')
        }, 1500)
    })
    Promise.any([promiseA, promiseB, promiseC])
        .then(res => {
            console.log(res)
        })
        .catch(err => {
            console.log(err)
        })

結(jié)果:

4.Promise.race()

任意一個(gè) Promise 被敲定時(shí)敲定(即第一個(gè))。

案例展示:

const promiseA = new Promise((resolve, reject) => {
        setTimeout(() => {
            reject('promiseA')
        }, 5000)
    })
    const promiseB = new Promise((resolve, reject) => {
        setTimeout(() => {
            reject('promiseB')
        }, 1000)
    })
    const promiseC = new Promise((resolve, reject) => {
        setTimeout(() => {
            reject('promiseC')
        }, 1500)
    })
    Promise.race([promiseA, promiseB, promiseC])
        .then(res => {
            console.log(res)
        })
        .catch(err => {
            console.log(err)
        })

結(jié)果:

const promiseA = new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('promiseA')
        }, 500)
    })
    const promiseB = new Promise((resolve, reject) => {
        setTimeout(() => {
            reject('promiseB')
        }, 1000)
    })
    const promiseC = new Promise((resolve, reject) => {
        setTimeout(() => {
            reject('promiseC')
        }, 1500)
    })
    Promise.race([promiseA, promiseB, promiseC])
        .then(res => {
            console.log(res)
        })
        .catch(err => {
            console.log(err)
        })

結(jié)果:

總結(jié) 

到此這篇關(guān)于JavaScript同步異步處理Promise的常用方法的文章就介紹到這了,更多相關(guān)JS同步異步處理Promise內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

西城区| 大理市| 富顺县| 大埔县| 吉安市| 陆河县| 北碚区| 宁夏| 罗江县| 定远县| 双鸭山市| 神木县| 色达县| 元阳县| 古交市| 平舆县| 八宿县| 霍林郭勒市| 东阿县| 自治县| 潼关县| 云南省| 金门县| 长泰县| 石屏县| 鄂州市| 蒲江县| 乳山市| 青州市| 陵川县| 永仁县| 永新县| 岢岚县| 兴文县| 三台县| 丹东市| 丹巴县| 建德市| 甘谷县| 利辛县| 城口县|