今天遇到一个问题就是在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 导致的闭包问题了.(将异步改为同步)