点击一个按钮如何循环发送请求

1,783 阅读1分钟

今天遇到一个问题就是在vue+elementui项目里面,在一个表格里面每一行的数据都要获取到数据,然后将数据当做参数调用对应的接口,项目里有六行数据,意味着要发送六次请求,此时有两种解决办法,一种就是让后台改一下接口,换成一个接口,然后六行数据拼起来之后统一发送至那一个接口,第二种方法就要用到循环发送请求了,如何实现上代码

  var that = this
  var promiseAll = subCaidList.map(function() {
    return that.axios.post('url', data)
  })

  that.axios.all(promiseAll).then(function(resArr) {
    resArr.forEach(function(res, i) {
      that.subList[i].categoryList = res.data.data.categoryList
    })
  })
  
  得到的resArr为六次接口都调用完成之后返回的数据,是一个数组,即每次调用一个接口返回一个数据,然后六次push得到的总集,里面的每一项是一个对象,等所有的请求都返回了, 在去处理数据. 这样就不存在异步以及循环 i 导致的闭包问题了.(将异步改为同步)