美文网首页
js异步请求问题

js异步请求问题

作者: ZZES_ZCDC | 来源:发表于2018-07-05 19:34 被阅读58次

    问题: 后台的接口返回的是一个id,我需要的是那个id对应的详情数据,但是我用自己想的方法发现最后获取不到

    let arr = []
    result.map(async v => {
      let b = await ctx.service.center.getDetails(id)
      arr.push(b)
    }
    

    之后打印arr是个空数组,所以还是存在异步问题

    解决方法

    首先想到的是,把promise存到数组,然后用Promise.all()把数据搞定

    let arr = []
    result.map(async v => {
      let b = ctx.service.center.getDetails(id)
      arr.push(b)
    }
    Promise.all(arr).then(r => console.log(r))
    

    然后了解了map遍历后直接会获取到数组

    let arr = result.map(async v => {
      return ctx.service.center.getDetails(id)
    }
    Promise.all(arr).then(r => console.log(r))
    

    最后全部简写

    const arr = await Promise.all(result.map(v => ctx.service.center.getDetails(id)))
    

    相关资料

    Promise.all()方法,返回的实例就是传入他里面的所有Promise的完成状态
    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Promise/all

    相关文章

      网友评论

          本文标题:js异步请求问题

          本文链接:https://www.haomeiwen.com/subject/eafmuftx.html