React / javascript загрузка данных кусками - PullRequest
0 голосов
/ 16 июня 2020

Не понимаю, как это сделать. Мой код сейчас:

import React from 'react';
import axios from 'axios';

class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      isAllLoaded: false,
      dataItems: [],
    };
    this.serviceURL = URL;
  } 

async componentDidMount() {
    const { isAllLoaded, dataItems } = this.state;
    try {
      const { searchId } = await axios.get(`${this.serviceURL}/search`);
      // ????
      while (!isAllLoaded) {
        const { data } = await axios.get(`${this.serviceURL}/dataItems?searchId=${searchId}`);
        const chunkData = data.dataItems;
        const isStop = data.stop;

        this.setState({
          isAllLoaded: isStop,
          dataItems: [...dataItems, ...chunkData],
        });
      }
      // ????
    } catch (error) {
      console.log(`failed: ${error}`); // failed: Error: Request failed with status code 500 :(
    }
  }
}

Мне нужно получить searchId, запрос: URL/search Ответ: {"searchId":"we5iD"}

, а затем загружать все элементы данных по частям. Запрос: URL/dataItems?searchId=4niyd Ответ: {dataItems: [], stop: false}

В загруженных кусках я получил tocken «стоп», это была отметка, последний фрагмент или нет. Я могу получить один фрагмент, но как продолжать загружаться, пока не будут загружены все фрагменты? когда я попробовал этот код, я получил ошибку 500. Следует ли использовать «while» с «await» или что-то еще?

...