Задать вопрос

Как добавить async/await метод в класс es6?

Пробую добавить async метод в класс es6, который будет делать асинхронный запрос. И я потом хочу вызвать тот метод в другом методе. Но к сожалению не работает:
class AwesomeProject extends Component {
    
async getMoviesFromApi() {
    try {
      let response = await fetch('http://facebook.github.io/react-native/movies.json');
      let responseJson = await response.json();
      return responseJson.movies;
    } catch(error) {
      console.error(error);
    }
  }

render() {
   let result = this.getMoviesFromApi(); // не работает
}

}


В методе render пробую вызвать асинхронный метод. Как правильно сделать?
  • Вопрос задан
  • 2105 просмотров
Подписаться 4 Оценить 3 комментария
Пригласить эксперта
Ответы на вопрос 1
@webzepter
class AwesomeProject extends Component {
  state = {
      movies: []
  };

  componentWillMount() {
    setTimeout(updateMovies, 2000);
  }

  @autobind
  async updateMovies() {
    const movies = await this.getMoviesFromApi();
    this.setState({...this.state, movies});
  }

  async getMoviesFromApi() {
    const response = await fetch('http://facebook.github.io/react-native/movies.json');
    const responseJson = await response.json();
    return responseJson.movies;
  }

  render() {
     return this.state.movies.map(movie => <Movie name={movie.name}/>);
  }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
18 дек. 2024, в 17:50
7000 руб./за проект
18 дек. 2024, в 17:26
5000 руб./за проект
18 дек. 2024, в 17:23
1500 руб./за проект