Ax ios 2 почтовых запроса - использовать ответ первого сообщения во втором запросе? - PullRequest
0 голосов
/ 08 апреля 2020

С помощью Ax ios Я пытаюсь:

  1. почтовый запрос с успешным ответом (или с ошибкой, с ошибкой возврата)

  2. если первый запрос успешен, используйте возвращенное значение в ответе и отправьте второй запрос в другую конечную точку

Ближайшее, что у меня было:

import axios from 'axios';

let one = "https://api.storyblok.com/v1/cdn/stories/health?version=published&token=wANpEQEsMYGOwLxwXQ76Ggtt"
let two = "https://api.storyblok.com/v1/cdn/datasources/?token=wANpEQEsMYGOwLxwXQ76Ggtt"
let three = "https://api.storyblok.com/v1/cdn/stories/vue?version=published&token=wANpEQEsMYGOwLxwXQ76Ggtt"

const requestOne = axios.get(one);
const requestTwo = axios.get(two);
const requestThree = axios.get(three);

axios.all([requestOne, requestTwo, requestThree]).then(axios.spread((...responses) => {
  const responseOne = responses[0]
  const responseTwo = responses[1]
  const responesThree = responses[2]
  // use/access the results 
})).catch(errors => {
  // react on errors.
})

Но это делает вызовы сразу, поэтому я не могу передать значение второму сообщению, если это имеет смысл?

Ответы [ 2 ]

2 голосов
/ 08 апреля 2020

В вашем случае это не применимо, так как второй вызов API зависит от результата первого вызова API.

Я бы предложил сделать первый вызов с async-await, чтобы дождаться ответа, а затем сделайте второй вызов, используя это.

Попробуйте что-то вроде этого:

async function callApis(){
let responseOne = await fetch("/endpointOne");
// Check for response and if successful call the second api
let responseTwo = await fetch("/endpointTwo");
}

Короче говоря, дождитесь, пока первый API достигнет sh, прежде чем вызывать второй API.

Надеюсь, это поможет!

Отредактировано для использования fetch. Мне не понятно как вам хотелось использовать axios или нет.

1 голос
/ 08 апреля 2020

Так наткнулся на это и попробовал:

axios.get(`/endpoint`) 
.then(
  responseA =>
    Promise.all([
      responseA,
      axios.get("/endpointB")
    ])   
)
.then(
  ([responseA,responseB]) => {
  console.log(responseA,responseB);
})
.catch((err) => {
    console.log(err.message);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...