.
O
K
A
Y
A

AJAX---Promise的部分静态方法(all,race,allSettled)

Promise.all

作用:合并多个promise对象,等待结果全部成功后,返回结果

语法:Promise.all( [Promise对象1,Promise对象2,Promise对象3]…).then()

特点:返回结果是一个数组,值是按顺序对应小Promise对象的成功结果

注意:如果有1个Promise失败, 则整个Promise对象则失败,它的值是这个失败的Promise的值

案例:

<script>
    let p1 = new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve(100)
        }, 5000)
    })
    let p2 = new Promise((resolve, reject) => {
        setTimeout(() => {
            reject(1)
        }, 1000)
    })
    let p3 = axios.get('http://ajax-api.itheima.net/api/province')
    let p = Promise.all([p1, p2, p3])
    p.then(res => {
        console.log(res)
    }).catch(err => {
        console.log('err', err)
    })
</script>

返回结果是err 1

Promise.race

作用:发起并同时运行多个promise对象, 只要任何一个有结果(成功|失败), 返回结果执行then

语法:Promise.race( [Promise对象1,Promise对象2,Promise对象3]…).then()

特点:返回第一个有结果的Promise对象的结果,无论成功失败

案例:

<script>
    let p1 = new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve(10)
        }, 10)
    })
    let p2 = new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve(1)
        }, 1000)
    })
    let p3 = axios.get('http://ajax-api.itheima.net/api/province11')

    let p = Promise.race([p1, p2, p3])
    p.then(res => {
        console.log(res)
    }).catch(err => {
        console.log('err', err)
    })
</script>

返回结果是 10

Promise.allSettled

作用:合并多个promise对象,返回结果

语法:Promise.allSettled( [Promise对象1,Promise对象2,Promise对象3]…).then()

特点:返回一个promise,并带有一个对象数组

注意:返回的是一个所有给定的 promise都已经fulfilled或rejected的 promise对象

案例:

<script>
    let p1 = Promise.reject(1)
    let p2 = Promise.resolve(2)
    let p3 = Promise.resolve(3)
    let p = Promise.allSettled([p1, p2, p3])
    console.log(p)
</script>

结果是一个promise对象,里面带有一个对象数组

posted @ 2022-11-15 22:01  三井绫子  阅读(79)  评论(0编辑  收藏  举报