promise.all的使用

使用promise.all方法可以解决需要两个异步方法返回值时,但两个异步方法返回时间不同,所造成对两个方法返回值使用时一个方法返回了,然后另一个方法值没有返回时,数据处理错误等问题。

promise.all()该方法用于将多个Promise实例,包装成一个新的Promise实例。

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

(1)只有p1、p2的状态都变成fulfilled,p的状态才会变成fulfilled,此时p1、p2的返回值组成一个数组,传递给p的回调函数。
(2)只要p1、p2之中有一个被rejected,p的状态就变成rejected,此时第一个被reject的实例的返回值,会传递给p的回调函数。

注意( promise.all()成功时,在then(result)中result是个数组


    //获取p1数据
    let p1 = new Promise((resolve, reject) => {
      resolve([
        {
          demo: 'p1数据',
        },
      ])
      // getFundOpenApplyByMobile().then(
      //   (res) => {
      //     //这里是接口方法
      //     let result = res.data
      //     resolve(result) //接口返回成功,抛出成功结果
      //   },
      //   (error) => {
      //     reject(error) //接口报错抛出错误信息
      //   }
      // )
    })

    //获取p2数据
    let p2 = new Promise((resolve, reject) => {
      setTimeout(()=>{
         resolve([
         {
           key_1: '值1-1',
           key_2: '值1-2',
           key_3: '值1-3',
           key_4: '值1-4',
         }])
      },4000)
      // getFundOpenApplyByMobile().then(
      //   (res) => {
      //     //这里是接口方法
      //     let result = res.data
      //     resolve(result) //接口返回成功,抛出成功结果
      //   },
      //   (error) => {
      //     reject(error) //接口报错抛出错误信息
      //   }
      // )
    })
    //两个都通过再同时进行赋值
    Promise.all([p1, p2])
      .then((result) => {
        console.log(result,"-----返回值") //['成功了', 'success']
      })
      .catch((error) => {
        console.log(error)
      })

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值