отреагировать долго опрос асин c жду - PullRequest
0 голосов
/ 21 марта 2020

Необходимо отправлять запросы на сервер, пока он не вернет ответ, например: {tickets: [], stop: true}

Вот мой код, который возвращает неопределенное значение:

  getTickets(prevToken) {
    const token = prevToken ? prevToken : await this.getToken();
    const response = await fetch(`https://front-test.beta.aviasales.ru/tickets?searchId=${token}`);

    if (response.ok) {
        let tickets = await response.json();
        return tickets.tickets;
    } else if (response.status == '404') {
        await this.getTickets()
    } else {
        await this.getTickets(token);
    }
  }

  async getToken() {
    const token = await fetch('https://front-test.beta.aviasales.ru/search');
    const tokenId = await token.json();

    return tokenId.searchId;
  }

  async componentDidMount() {
    const tickets = await this.getTickets();

    this.setState(state => ({
      tickets: tickets
    }))
  }

В противном случае, если я запускаю такой код:

   getTickets(prevToken) {
    const token = prevToken ? prevToken : await this.getToken();
    const response = await fetch(`https://front-test.beta.aviasales.ru/tickets?searchId=${token}`);

    if (response.ok) {
        return tickets.tickets;
    } else {
        await this.getTickets(token);
    }
  }

  async componentDidMount() {
    const tickets = await this.getTickets();

    this.setState(state => ({
      tickets: tickets
    }))
  }

он возвращает правильное значение. Как решить эту проблему?

...