promise、await、async笔试题

题目描述:
        

/**
     * const remoteAdd = async (a, b) => new Promise(resolve => {
        setTimeout(() => resolve(a + b), 1000);
      });

      // 请实现本地的localAdd方法,调用remoteAdd,能最优的实现输入数字的加法
      async function localAdd(...inputs) {
        // 你的实现
        inputs.reduce((pre, cur) => {
          this.remoteAdd(pre, cur).then(res => {
            return res
          })
        })
      }

      // 请用示例验证运行结果:
      localAdd(1, 2)
        .then(result => {
          console.log(result); // 3
      });

      localAdd(3, 5, 2)
        .then(result => {
          console.log(result); // 10
      });
     * 
*/


 

题目答案:

localAdd(3, 5, 2).then(res => {
    console.log('sum=' + res)
})

function remoteAdd(a, b) {
    return new Promise(resolve => {
      setTimeout(() => resolve(a + b), 1000)
    })
}

function localAdd (...inputs) {
    let sum = inputs.reduce(async (pre, cur) => {
      let preV = 0
      let val = 0
      if (typeof pre === 'object') {
        await pre.then(res => {
          preV = res
        })
      } else {
        preV = pre
      }
      await remoteAdd(preV, cur).then(res => {
        val = res
      })
      return val
    })
    return new Promise(resolve => {
      resolve(sum)
    })
  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值