여러 비동기 작업의 동시 실행
문제:
아래 코드에서 비동기 작업은 순차적으로 실행됩니다. 동시:
const value1 = await getValue1Async(); const value2 = await getValue2Async();
작업을 동시에 실행하려면 코드를 수정해야 합니다.
해결책:
TL;DR
순차 대기 대신 Promise.all을 사용하세요. 패턴:
const [value1, value2] = await Promise.all([getValue1Async(), getValue2Async()]);
세부 정보:
원래 솔루션은 두 작업을 병렬로 실행하지만 두 번째 작업을 기다리기 전에 첫 번째 작업이 완료될 때까지 기다립니다. 한 작업이 다른 작업보다 훨씬 오래 걸리는 경우 성능 문제가 발생할 수 있습니다.
Promise.all을 사용하면 여러 작업이 동시에 완료될 때까지 기다릴 수 있습니다. Promise의 배열을 취하고 원래 배열과 동일한 순서로 결과의 배열로 해결되는 Promise를 반환합니다.
Promise.all의 장점:
주의:
첫 번째 약속이 해결되기 전에 두 번째 약속이 거부되면 "get 약속한 후 기다리세요' 패턴을 사용하면 '처리되지 않은 거부' 오류가 발생할 수 있습니다. Promise.all을 사용하면 이 문제를 피할 수 있습니다.
예:
다음은 Promise.all을 사용하여 수정된 예입니다.
const getValue1Async = () => { return new Promise(resolve => { setTimeout(resolve, 500, "value1"); }); }; const getValue2Async = () => { return new Promise((resolve, reject) => { setTimeout(reject, 100, "error"); }); }; (async () => { try { console.time("Promise.all"); const [value1, value2] = await Promise.all([getValue1Async(), getValue2Async()]); } catch (e) { console.timeEnd("Promise.all", e); } })();
이 코드 Promise.all이 두 비동기 작업을 동시에 실행하여 더 빠르게 완료하는 방법을 보여줍니다.
위 내용은 JavaScript에서 여러 비동기 작업을 동시에 실행하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!