Как использовать axios.all с почтовыми запросами, которые имеют заголовки и тело? - PullRequest
0 голосов
/ 05 ноября 2018

Я получаю доступ к удаленному API через приложение ReactJS. Мне нужно сделать несколько запросов POST, а затем выполнить действие после того, как все они сделаны. Я пришел к выводу, что использование 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.all, код застрял в цикле или, по крайней мере, не выполнил то, что находится внутри.

Когда я изменил аксиозную часть для использования axios.post, я получаю сообщение об ошибке.

Как правильно использовать axios.all для выполнения нескольких запросов POST, каждый из которых имеет заголовки и тела?

1 Ответ

0 голосов
/ 26 июня 2019

Это также случилось со мной - я хотел загрузить несколько файлов в асинхронном режиме. Я решил это, выполнив следующее:

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*/
})

Store 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...