>  기사  >  웹 프론트엔드  >  루프에 대한 JavaScript ES6 약속에서 비동기 체인을 달성하는 방법은 무엇입니까?

루프에 대한 JavaScript ES6 약속에서 비동기 체인을 달성하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-22 11:52:12754검색

How to Achieve Asynchronous Chaining in a JavaScript ES6 Promise for Loop?

비동기 체인을 사용하는 JavaScript ES6 Promise for Loop

제공된 코드에서는 10번 반복하고 각각에 대해 Promise를 생성하는 for 루프를 생성하려고 시도합니다. 반복. 그러나 루프가 동기적으로 실행되어 예측할 수 없는 출력이 발생합니다. 목표는 이전 약속이 해결된 후에만 각 약속이 실행되도록 하는 것입니다.

Promisifying setTimeout

해결책을 용이하게 하기 위해 다음과 같은 도우미 함수를 정의합니다. setTimeout 함수를 약속하는 지연:

const delay = ms => new Promise(resolve => setTimeout(resolve, ms));

만들기 비동기식 약속

비동기식 실행을 보장하기 위해 즉시 해결되는 초기 약속을 만듭니다. 각 후속 Promise는 이전 Promise에 연결됩니다.

let p = Promise.resolve();
for (let i = 0; i < 10; i++) {
    p = p.then(() => delay(Math.random() * 1000))
         .then(() => console.log(i));
}

이 접근 방식은 각 루프 반복이 이전 Promise가 완료된 후 해결되는 Promise를 생성하도록 보장합니다. console.log(i) 문은 올바른 순서로 실행되어 0부터 9까지의 값을 인쇄합니다.

위 내용은 루프에 대한 JavaScript ES6 약속에서 비동기 체인을 달성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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