문제 설명
루프가 동기식으로 반복되어 각 반복의 Promise와 후속 로깅 작업(logger.log(res))이 올바른지 확인하세요. order?
해결책
Eschewing PromiseWhile
promiseWhile 함수는 Promise를 사용한 반복을 용이하게 할 수 있지만 체인 실행 순서
직렬화를 위해 Reduce 사용
원하는 순서를 유지하려면 Array.prototype.reduce()를 활용하여 .then()의 플랫 체인을 생성할 수 있습니다. 운영. 이렇게 하면 재귀가 필요하지 않습니다.
<code class="javascript">function fetchUserDetails(arr) { return arr.reduce(function(promise, email) { return promise.then(function() { return db.getUser(email).done(function(res) { logger.log(res); }); }); }, Promise.resolve()); }</code>
샘플 사용법
<code class="javascript">// Compose an array of email addresses var arrayOfEmailAddys = [...]; fetchUserDetails(arrayOfEmailAddys).then(function() { console.log('all done'); });</code>
이점
이 접근 방식은 promiseWhile 메소드에 추가 변수 및 조건 함수가 필요합니다. 또한 코드를 단순화하고 약속 실행의 올바른 순서를 보장합니다.
위 내용은 약속 작업으로 동기 루프 실행을 보장하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!