여러 비동기 작업을 동시에 처리
비동기 작업의 시퀀스(프라미스로 표시됨)가 실행되는 시나리오에서는 다음을 결정해야 합니다. 후속 작업을 진행하기 전에 이러한 모든 작업이 완료되었을 때. 이 기사에서는 Promise.all() 메서드를 활용하여 이 문제에 대한 솔루션을 제공합니다.
언급한 대로 doSomeAsyncStuff() 함수는 비동기 작업을 수행합니다. Promise를 반환하도록 수정하면 각 비동기 작업의 완료 상태를 캡처할 수 있습니다. 이를 통해 이러한 모든 Promise를 배열로 수집한 다음 Promise.all()에 전달할 수 있습니다.
Promise.all() 메서드는 Promise 배열을 매개 변수로 받아들입니다. 배열의 모든 Promise가 해결되거나 거부되면 Promise.all()은 단일 Promise를 반환합니다. 이 단일 Promise는 개별 Promise의 결과(또는 거부 이유) 배열로 확인됩니다.
코드에서 다음 단계를 통합하여 이를 구현할 수 있습니다.
const promises = []; // Create a Promise for each asynchronous operation for (let i = 0; i < 5; i++) { promises.push(doSomeAsyncStuff()); } // Use Promise.all to wait for all the Promises to resolve Promise.all(promises) .then(() => { // All asynchronous operations have completed. Execute subsequent tasks here. for (let i = 0; i < 5; i++) { doSomeStuffOnlyWhenTheAsyncStuffIsFinish(); } }) .catch((e) => { // Handle any errors that occurred during the asynchronous operations. });
By Promise.all()을 활용하면 결과에 따라 달라지는 작업을 실행하기 전에 모든 비동기 작업이 성공적으로 완료되었는지 효과적으로 확인할 수 있습니다.
더 자세한 설명은 제공된 예제를 참조하세요.
function doSomethingAsync(value) { return new Promise((resolve) => { setTimeout(() => { console.log("Resolving " + value); resolve(value); }, Math.floor(Math.random() * 1000)); }); } function test() { const promises = []; for (let i = 0; i < 5; ++i) { promises.push(doSomethingAsync(i)); } Promise.all(promises) .then((results) => { console.log("All done", results); }) .catch((e) => { // Handle errors here }); } test();
이 예제에서는 무작위 지연으로 해결되는 비동기 함수 doSomethingAsync()를 정의합니다. Promise 배열을 생성하고 Promise.all()을 사용하여 모든 Promise가 해결될 때까지 기다립니다. 모두 성공적으로 완료되면 후속 작업을 진행할 수 있습니다.
위 내용은 Promise.all()은 여러 동시 비동기 작업을 어떻게 처리할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!