将变量存储在多个块中

时间:2018-06-22 16:34:40

标签: javascript

我正在通过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,并且无法区分元素。

有什么办法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

每次value循环运行时,您将覆盖.map变量。

也不能保证您的承诺会按顺序返回,因此您将需要一种查找每个值的方法。因为您一次执行所有操作,所以您确实需要一种通过响应对象本身确定该ID的方法。