Обработка второго ответа при выполнении нескольких запросов GET в React

Мне удалось передать первый ответ в данные имени состояния (this.state.data) компонента. Но когда я пытаюсь выполнить второй запрос data1 из другого API, он не отображается. Оба ответа хороши после проверки в инструменте разработки, а первый я могу использовать данные.

class WeatherApp extends React.Component {
constructor(props) {
  super(props);
  this.state = {
    error: null,
    isLoaded: false,
    data: [],
    data1: []
  };
}

componentDidMount() {
  Promise.all([
      fetch("weatherAPI.php"),
      fetch("weatherAPIToday.php")
    ]).then(([res, res1]) => res.json())
    .then((result, result1) => {
        this.setState({
          isLoaded: true,
          data: result,
          data1: result1
        }, console.info(result));
      },

      (error) => {
        this.setState({
          isLoaded: true,
          error
        });
      }
    );
}

Это допустимый синтаксис для вызова fetch?

Jack Bashford 06.11.2018 03:30

Ага. Получил прямо из документации React. Вы можете увидеть мой код для работы двух выборок. mysite-thiettan.c9users.io/reactTest.html

Iccarys 06.11.2018 03:39

Я имею в виду массив и все такое. Он вызывает массив или элементы в массиве?

Jack Bashford 06.11.2018 03:39

Честно говоря не уверен. Я новичок в этом. Но я думал, что Promise.all вызывает все элементы массива выборки.

Iccarys 06.11.2018 03:44

Я бы Promise.all([fetch("weatherAPI.php").then(res=>res.json()), fetch("weatherAPIToday.php").then(res=>res.json())]).then(([‌​json, json1]) => { ... handle data here })

Bravo 06.11.2018 04:02
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
5
398
1

Ответы 1

Поскольку и res, и res1 возвращают обещание, все, что вам нужно сделать, это заключить их в Promise # all

Promise.all([
    fetch("weatherAPI.php"),
    fetch("weatherAPIToday.php")
]).then(([res, res1]) => Promise.all(res.json(), res1.json()))
.then((result, result1) => {
    this.setState({
        isLoaded: true,
        data: result,
        data1: result1
    }, console.info(result));
})
.catch(error => {
    this.setState({ isLoaded: true, error });
});

почему не Promise.all([ fetch("weatherAPI.php").then(res=>res.json()), fetch("weatherAPIToday.php").then(res=>res.json()) ])

Bravo 06.11.2018 04:03

На самом деле @Bravo личные предпочтения. Я подумал, что сохраню его так, как он написал свой.

Naismith 06.11.2018 04:12

Привет спасибо! Но тогда это дает мне ошибку: # <Promise> не повторяется

Iccarys 06.11.2018 05:28

Другие вопросы по теме