我正在通过http
执行几个axios
请求,以从我的api中获取一些数据。因此,我正在使用一个名为array
的{{1}},其中包含应传递给请求的所有信息(ID)。看起来像这样:
Info
当然,我正在使用链式方法var value;
Promise.all(Info.map(i => {
this.value = i;
return axios.get('http://API -Address'+i)
处理响应。但是,变量.then()
显然仅存在于i
之前的块中。但是我在.then()
块中也需要它,因为我将所有.then
推入response data
并希望能够通过传递anotherArray
变量来区分它们来自特定请求的每个结果。
i
根据我的逻辑,.then(results => {
results.map(res => {
let val = this.value;
anotherArray.push({...res.data, 'id': val});
})
})
变量应该更新并设置为等于实际的value
。此后,时间变量i
将设置为等于val
并传递到value
中。最后,我想要一个类似的东西:
anotherArray
到目前为止,它仍然有效,但有一个不足之处,变量[
{data: "someData", id: 1},
{data: "someOtherData, id: 2}
]
包含value
数组的最后一个元素的值,而不是每个请求的特定值。这意味着我在Info
中获得的每个数据都具有相同的ID,并且无法区分元素。
有什么办法可以解决这个问题吗?
答案 0 :(得分:0)
每次value
循环运行时,您将覆盖.map
变量。
也不能保证您的承诺会按顺序返回,因此您将需要一种查找每个值的方法。因为您一次执行所有操作,所以您确实需要一种通过响应对象本身确定该ID的方法。