首页 > 解决方案 > 使用 axios.all 时无法捕获异常

问题描述

我正在使用 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],我看到的是一个承诺,而不是已解决的值。

我错过了什么?

标签: javascriptreactjsasynchronouspromiseaxios

解决方案


newReqs,modifiedReqs并且deleteRequests是 axios 请求的数组。根据文档,您不能将数组内的数组传递给axios.all.

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

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

推荐阅读