복붙노트

[REACTJS] 어떻게 여러 페이지를 통해 데이터를 가져?

REACTJS

어떻게 여러 페이지를 통해 데이터를 가져?

해결법


  1. 1.가능한 솔루션 년 - 아이디어는 배열에 각 통화에서 약속을 누르면, 다음, 첫 번째 페이지 수를 얻을 API 호출의 적절한 수를 확인하는 것입니다. 우리는 그 해결에 대한 모든 약속 기다린 반환 된 데이터에 뭔가.

    가능한 솔루션 년 - 아이디어는 배열에 각 통화에서 약속을 누르면, 다음, 첫 번째 페이지 수를 얻을 API 호출의 적절한 수를 확인하는 것입니다. 우리는 그 해결에 대한 모든 약속 기다린 반환 된 데이터에 뭔가.

    function fetchMetaData() {
        let pagesRequired = 0;
    
        fetch('apiUrlToGetPageNumber')
        .then(resp = > {
            const apiPromises = [];
            pagesRequired = resp.data.pagesRequired;
    
            for (let i=pagesRequired; i>0;i--) {
                apiPromises.push(fetch('apiUrlToSpecificPage?page = ' + i));
            }
    
            Promise.all(apiPromises)
            .then(responses => {
                const processedResponses = [];
                responses.map(response => {
                    processedResponses.push(response);
                }
    
                // do something with processedResponses here
            });
        }
    }
    

  2. 2.여기서 비동기 / AWAIT을 사용하는 또 다른 가능한 해결책이다. 이것의 아름다움은 TOTAL_PAGES 당신이 당신의 요청을 처리하는 동안이 증가하는 경우가 있는지 확인합니다 당신이 모든 것을 얻을 수 있도록 동적 계산이다.

    여기서 비동기 / AWAIT을 사용하는 또 다른 가능한 해결책이다. 이것의 아름다움은 TOTAL_PAGES 당신이 당신의 요청을 처리하는 동안이 증가하는 경우가 있는지 확인합니다 당신이 모든 것을 얻을 수 있도록 동적 계산이다.

    async function fetchMetaData() {
      let allData = [];
      let morePagesAvailable = true;
      let currentPage = 0;
    
      while(morePagesAvailable) {
        currentPage++;
        const response = await fetch(`http://api.dhsprogram.com/rest/dhs/data?page=${currentPage}`)
        let { data, total_pages } = await response.json();
        data.forEach(e => allData.unshift(e));
        morePagesAvailable = currentPage < total_pages;
      }
    
      return allData;
    }
    
  3. from https://stackoverflow.com/questions/40677764/how-to-fetch-data-over-multiple-pages by cc-by-sa and MIT license