我正在使用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请求的正确方法是什么?
答案 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);
}