제공된 코드에서는 10번 반복하고 각각에 대해 Promise를 생성하는 for 루프를 생성하려고 시도합니다. 반복. 그러나 루프가 동기적으로 실행되어 예측할 수 없는 출력이 발생합니다. 목표는 이전 약속이 해결된 후에만 각 약속이 실행되도록 하는 것입니다.
해결책을 용이하게 하기 위해 다음과 같은 도우미 함수를 정의합니다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!