>웹 프론트엔드 >JS 튜토리얼 >Async/Await 및 setTimeout을 사용하여 API 요청 속도를 효과적으로 제어하는 ​​방법은 무엇입니까?

Async/Await 및 setTimeout을 사용하여 API 요청 속도를 효과적으로 제어하는 ​​방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-27 17:38:11562검색

How to Effectively Control the Rate of API Requests Using Async/Await and setTimeout?

Async 함수 Await setTimeout의 조합

이 코드 조각에서 asyncGenerator 함수는 async-await 기능을 활용하여 목록을 처리하려고 시도합니다. Google API의 파일 중 그러나 while 루프가 너무 빨리 실행되어 초당 과도한 API 요청이 발생합니다. 이 문제를 해결하기 위해 개발자는 API 요청을 지연시키기 위해 sleep 함수인 listFiles를 도입하려고 합니다.

sleep 함수는 listFiles 함수의 실행을 3000밀리초까지 지연하도록 설계되었습니다. 그러나 코드가 의도한 대로 작동하지 않습니다. 문제는 기다릴 수 있는 약속을 기본적으로 반환하지 않는 setTimeout 함수에 있습니다.

이 문제를 해결하려면 시간 초과 도우미 함수를 통해 setTimeout 함수를 약속해야 합니다.

function timeout(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}

또한 수면 기능을 수정하여 타임아웃 도우미를 사용할 수 있습니다. 함수:

async function sleep(fn, ...args) {
    await timeout(3000);
    return fn(...args);
}

또는 콜백 기반 절전 함수를 사용하지 않고 while 루프 속도를 늦추려면 다음 접근 방식을 사용할 수 있습니다.

while (goOn) {
  // other code
  var [parents] = await Promise.all([
      listFiles(nextPageToken).then(requestParents),
      timeout(5000)
  ]);
  // other code
}

이 접근 방식을 사용하면 계산이 보장됩니다. 의 부모는 최소 5초가 소요되어 루프 속도가 효과적으로 느려집니다.

위 내용은 Async/Await 및 setTimeout을 사용하여 API 요청 속도를 효과적으로 제어하는 ​​방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.