>

사이클마다 순환하고 REST 쿼리를 생성하여 매번 다른 쿼리를 생성하고 실행하는 루프가 있습니다.

향후 브라우저에서 한 번에 수행 할 수있는 것 (20,000 이상)보다 REST 쿼리 수가 더 많이 증가 할 것으로 예상됩니다.

루프 수를 세고 500 초마다 몇 초 동안 일시 중지하여 브라우저가 REST 응답을 따라 잡고 계속할 수 있도록 줄을 따라 무언가를하고 싶습니다.

이것은 반응 JS에서 어떻게 이루어 집니까?

예제 코드 :

for (var i = 0; i < array.length; i++)
{
  query += i; 
  axious.get(query) . then { ...does stuff here... } 
  //want something along the lines of if multiple of 500, wait(1000)
}

  • 답변 # 1

    가장 간단한 방법은 waitIf 를 만드는 것입니다   Promise 를 반환하는 함수  조건을 받아들입니다. 조건이 true 인 경우 대기하고 콜백을 실행합니다. 그렇지 않으면 콜백을 직접 실행합니다.

    간단한 구현이 될 것입니다.

    function waitIf(condition, duration, callback) {
    
        if (condition) {
            // return a Promise that wait for a `duration` ms using timeout 
            return Promise((resolve) => {
                setTimeout(() => {
                    resolve(callback());
                }, duration);
            })
        }
        return callback();
    }
    for (let i = 0; i < array.length; i++) {
        query += i;
        // unify the call here
        waitIf(i % 500 === 0, 1000, () => axious.get(query)).then();
    }
    
    

  • 이전 python - 텐서 플로우 테스트 문제
  • 다음 android - 한 텍스트 뷰 공간을 다른 텍스트 뷰 공간으로 확장