Axios: Exemplo de como encadear várias solicitações?

Criado em 15 fev. 2017  ·  12Comentários  ·  Fonte: axios/axios

Alguém pode me indicar um exemplo ou compartilhar um trecho de código de como encadear várias solicitações, quando o resultado da primeira solicitação deve ser usado para fazer a segunda solicitação etc.?

Comentários muito úteis

Você pode encadear os resultados, pois são promessas regulares:

axios.get(...)
  .then((response) => {
    return axios.get(...); // using response.data
  })
  .then((response) => {
    console.log('Response', response);
  });

Todos 12 comentários

Você pode encadear os resultados, pois são promessas regulares:

axios.get(...)
  .then((response) => {
    return axios.get(...); // using response.data
  })
  .then((response) => {
    console.log('Response', response);
  });

Neste exemplo, response volta como indefinido mesmo quando a solicitação é bem-sucedida?

Não, deve ser definido. Lembre-se da declaração return . Você provavelmente perdeu.

aaaa

E como você detectaria os erros individuais neste caso?

Eu tenho um loop (for) para enviar axios post, e descobri que cada solicitação não foi enviada após cada loop, eles enviaram juntos após o loop
este é o meu código

`
for (seja i = 0;i < difere;i++) {
tem.start = momento(início).add(i, 'dias').format('AAAA-MM-DD')
tem.end = momento(tem.start).endOf('dia').format('AAAA-MM-DD 23:59:59')
tem.data = tem.início
// if (V.hasSameValue(título, tem.início, tem.fim))continua
V.addEventsToCalendar(tem)
}
addEventsToCalendar: (evento) => {
axios.post(requestUrl('calendar'), {...evento})
.then(res => {
V.eventsRender(V.dataToEvent([res.data]))
Dica de sucesso()
})
.catch(errorDica)
},

`

@Liaohuanle
Por ser assíncrono, não espera o final de cada operação. Em vez de loop, você pode usar recursão simples.

Por que não tentar isso?

axios.get(...)
  .then((response) => {
    axios.get(...)
   .then((response) => {
      console.log('response);
    })
})

@alejogamboa Mais um inferno de callback, o que você acha?

var array = [0,1,2];
axios.get('api/' + array[0]).then(response => {
    axios.get('api/' + array[1]).then(response => {
         axios.get('api/' + array[2]).then(response => {
            alert('done');
         });
    });
});

como faço para encadeá-lo com base na matriz?

@jericopulvera veja como usar
axios.all([])

for (...) {
  arr.push(axios.get("url"));
}

let result = await axios.all(arr);
console.log(res);

Já tenho a solução aqui #1413

Esta página foi útil?
0 / 5 - 0 avaliações