>웹 프론트엔드 >JS 튜토리얼 >계속하기 전에 여러 JavaScript 약속이 완료될 때까지 어떻게 기다릴 수 있나요?

계속하기 전에 여러 JavaScript 약속이 완료될 때까지 어떻게 기다릴 수 있나요?

Barbara Streisand
Barbara Streisand원래의
2024-12-19 00:16:09379검색

How Can I Wait for Multiple JavaScript Promises to Finish Before Continuing?

JavaScript에서 여러 비동기 작업이 완료되기를 기다리는 중

문제:

일련의 비동기 작업(프라미스)이 있습니다. ) 모든 코드가 완료된 경우에만 코드 블록을 실행해야 합니다. 완료되었습니다.

해결책:

Promise.all을 사용하여 모든 Promise를 단일 배열로 수집하고 해결될 때까지 기다립니다. 거부.

구현:

const promises = [];

for (let i = 0; i < 5; i++) {
  promises.push(doSomeAsyncStuff());
}

Promise.all(promises)
  .then(() => {
    for (let i = 0; i < 5; i++) {
      doSomeStuffOnlyWhenTheAsyncStuffIsFinish();
    }
  })
  .catch((e) => {
    // Handle errors here
  });

수정된 doSomeAsyncStuff 함수:

function doSomeAsyncStuff() {
  return new Promise((resolve, reject) => {
    const editor = generateCKEditor();
    editor.on('instanceReady', (evt) => {
      doSomeStuff();
      resolve(true);
    })
  });
}

예:

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();

위 내용은 계속하기 전에 여러 JavaScript 약속이 완료될 때까지 어떻게 기다릴 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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