【发布时间】:2019-10-13 02:29:15
【问题描述】:
我有一个 API 请求列表,只有在所有请求都完成后我才会返回答案。我为此使用了 Promise.all ,但似乎 promise.all 的 then 是在他应该等待的承诺之前被触发的。 我认为这是因为我在发布请求中有一个获取请求。我怎样才能使这项工作?
这是一个 react-redux 项目。
if (devices) {
const APIArray = [];
devices.forEach(device => {
const data = {
id: device.id,
};
dispatch({ type: EDIT_DEVICE, payload: data });
APIArray.push(
axios
.post('/deploy/update', data)
.then(res => {
ApiUtils.get(`/deploy/device?deviceId=${data.id}`).then(response => {
console.log('1');
dispatch({ type: EDIT_DEVICE_SUCCESS, payload: { device: response.data } });
});
})
.catch(error => {
dispatch({ type: EDIT_DEVICE_FAIL, payload: { device: data, error: error } });
})
);
});
return Promise.all(APIArray)
.then(res => {
console.log('2');
dispatch({ type: UPDATE_DEVICES_SUCCESS, payload: res });
return res;
})
.catch(err => {
return err
);
}
expected: console.log('1')
console.log('1')
console.log('2')
actual: console.log('2')
console.log('1')
console.log('1')
【问题讨论】:
标签: javascript promise