如何将axios.all用于具有标头和正文的发布请求?

时间:2018-11-05 11:13:11

标签: reactjs axios

我正在使用ReactJS应用程序访问远程API。我需要执行多个POST请求,然后在它们全部完成后执行一个操作。我得出的结论是,使用>>> import app >>> from app import * >>> data {'all_orders': [{'id': 456213548, 'created_at': '2018-11-04T23:18:18-02:00', 'number': 1982}, {'id': 4562222222, 'created_at': '2018-11-04T23:18:18-02:00', 'number': 1982}]} >>> update_orders(data) >>> SalesOrders.query.all() [<SalesOrders 456213548>, <SalesOrders 4562222222>] 是执行此操作的最佳方法。我尝试了下面的代码:

axios.all

请求是在var body = { pov: [ "Annual Value", "&CurrYear", "Fund Transfer", "Project NSP", "Input View", "Activity NSP", "Account NSP", "Location NSP", "Department NSP", getStageNameEN(vNum), "Line Item NSP", transfer, segment ], columns: [["Flag"]], rows: [{ row: [entity], data: [flag] }] }; promises.push( axios({ method: "post", url: "/api/setFlag", headers: { Authorization: "Basic " + localStorage.getItem("auth"), "Content-Type": "application/json" }, data: body }) ); axios.all(promises).then(function(results) { //do something here }); 部分之前发送的,因为当我删除请求时,也发生了同样的情况。当包含axios.all时,代码陷入了循环,或者至少没有执行其中的内容。

当我将axios部分更改为使用axios.all时,我总是收到错误消息。

使用axios.post来执行多个每个都有标头和正文的POST请求的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

这也发生在我身上-我想异步上传多个文件。我通过执行以下操作解决了该问题:

let requests = [];
let _cmp = this;
for (let i = 0; i < _cmp.images.length; i++) {
    requests.push(function() {
        return _cmp.storePhotoRequest(_cmp.images[i]);
    });
}

_cmp.$http.all(requests.map(function(r) {
    return r();
})).then(axios.spread(function() {
     /*more code*/
})

存储photoRequest进行此操作

storePhotoRequest: function(image) {
    const config = { headers: { 'Content-Type': 'multipart/form-data' } };
    let form = new FormData();
    form.append('photo', image.file);
    return this.$http.post('some', form, config);
}