使用axios.all时无法捕获异常

时间:2020-08-21 06:16:39

标签: javascript reactjs asynchronous promise axios

我正在使用axios.all发送少量合并请求。

我正在使用.map创建axios请求并将其传递给axios.all。

 function updateCircuitTrayData(newCircuitTrays, updatedCircuitTrays, deletedCircuitTrays, config) {
        const newReqs = newCircuitTrays.map(b => axios.post(`/`, b, config));
        const modifiedReqs = updatedCircuitTrays.map(b => axios.put(`/`, b, config));
        const deleteRequests = deletedCircuitTrays.map(b => axios.delete(`/`, b, config));
      return axios.all([newReqs, modifiedReqs, deleteRequests]);
    }
    updateBrandData(newCircuitTrays, updatedCircuitTrays, deletedCircuitTrays,  config)
    .then(
        axios.spread((...response) => {
            // tslint:disable-next-line:no-console
            console.log(`Data`, response);
        })
    )
    .catch(err => {
        // tslint:disable-next-line:no-console
        console.log(`Err`, err);
    });

正在调用API。但是,onError永远不会进入catch块。同样,对于成功呼叫,我正在使用axios.spread。但是当我查看response[0]的内部时,会看到一个承诺,而不是已解决的值。

我想念什么?

1 个答案:

答案 0 :(得分:1)

newReqsmodifiedReqsdeleteRequests是axios请求的数组。根据{{​​3}},您无法将数组内的数组传递给axios.all

但是,您可以扩展每个内部数组并将生成的展平数组传递到axios.all()

return axios.all([...newReqs, ...modifiedReqs, ...deleteRequests]);