@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, и в итоге в запросе ошибка т.к локация не определена, как мне дождаться результата первого фетча и после этого уже выполнить второй запрос?
Я полагаю что async/await в помощь но не пойму как переписать
  • Вопрос задан
  • 67 просмотров
Решения вопроса 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();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Intspirit Краснодар
от 80 000 до 150 000 ₽
27 янв. 2021, в 04:19
2500 руб./за проект
27 янв. 2021, в 00:37
11111 руб./за проект
26 янв. 2021, в 23:30
3000 руб./за проект