小编nan*_*guy的帖子

对于每个承诺,是否可以使用axios.all和then()?

我有一个React组件触发一个事件来获取数据.这导致动态数量的存储过程调用以获取数据,并且来自每个调用的数据存储在完全不同的位置.然后,一旦收到所有数据并且可用,我需要重新渲染.我正在使用带有axios的承诺.

由于axios调用的数量是动态的,我正在构建一个数组并将其插入axios.all如下:

let promises = [];

for (let i = 0; i < requests.length; i++) {
    promises.push(axios.get(request[i].url, { params: {...} }));
}

axios.all(promises).then(/* use the data */);
Run Code Online (Sandbox Code Playgroud)

问题是每个axios请求都会返回添加到完全不同位置的对象的数据.由于我无法将它们全部放在一个正确的位置then(我怎么知道哪个响应在哪个位置?),我尝试做这样的事情:

let promises = [];

for (let i = 0; i < requests.length; i++) {
    promises.push(
        axios.get(request[i].url, { params: {...} })
            .then(response => {myObject[request[i].saveLocation] = response.data;})
    );
}

axios.all(promises).then(/* use the data */);
Run Code Online (Sandbox Code Playgroud)

但是,这并不像我预期的那样有效.在then每次使用后get执行,但直到好后then附着axios.all.显然这是一个问题,因为我的代码在将数据保存到对象之前尝试使用它.

有没有办法then对每个axios.get将在其相应的promise解析后执行的单独调用,然后有一个then只在 …

javascript promise axios

12
推荐指数
1
解决办法
3万
查看次数

标签 统计

axios ×1

javascript ×1

promise ×1