Не понимаю, как это сделать. Мой код сейчас:
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» или что-то еще?