@reinmaker1990

Как дождаться результата ответа одной функции в другой?

Есть фетч запрос, который получает город:

fetch(url + query, options)
                    .then(response => response.json())
                    .then(data => this.currentCity = data.location.data.city)
                    .catch(error => console.error(error))

И есть другой запрос, который получает в данном варианте погоду:

fetch(`${this.base_url}weather?q=${this.currentCity}&units=metric&APPID=${this.api_key}`)
                    .then(response => response.json())
                    .then(data => this.weatherResult = data)

Проблема в том, что в this.currentCity в момент фетч запроса храниться undefined, и в итоге в запросе ошибка, т.к. локация не определена. Как дождаться результата первого фетча и после этого уже выполнить второй запрос?
  • Вопрос задан
  • 153 просмотра
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
this.weatherResult = await fetch(url + query, options)
    .then(response => response.json())
    .then(data => data.location.data.city)
    .then(currentCity => fetch(`${this.base_url}weather?q=${currentCity}&units=metric&APPID=${this.api_key}`))
    .then(response => response.json())


или

const firstResponse = await fetch(url + query, options);
const data = await firstResponse.json();
const currentCity = data.location.data.city;
const secondResponse = await fetch(`${this.base_url}weather?q=${currentCity}&units=metric&APPID=${this.api_key}`);
this.weatherResult = await secondResponse.json();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
26 нояб. 2024, в 21:30
30000 руб./за проект
26 нояб. 2024, в 20:38
120000 руб./за проект
26 нояб. 2024, в 20:08
1000 руб./за проект