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 중국어 웹사이트의 기타 관련 기사를 참조하세요!