Promise 기반 코드가 동기식으로 실행되도록 올바른 루프 구조 찾기
Promise 기반 코드로 작업할 때 올바른 루프 구조는 다음과 같습니다. 비동기 작업의 동기 실행을 보장하는 데 필수적입니다. 주어진 시나리오에서 목표는 각 반복 중에 "db.getUser(email).then(function(res) { logger.log(res); })"의 실행을 올바른 순서로 보장하는 루프를 구성하는 것입니다.
한 가지 접근 방식은 사용자 정의 "promiseWhile" 기능을 사용하는 것입니다. 이 방법은 일반적인 시나리오에 유용할 수 있지만 특정 사례에는 불필요한 복잡성이 발생합니다. 대신, 더 간단한 해결책은 map() 및 Reduce()와 같은 내장 배열 조작 기능을 활용하는 것입니다.
병렬 및 직렬 약속
문제는 다음과 같습니다. 응답의 순서를 유지해야 한다는 요구 사항에 따라 Array.prototype.map()을 통한 병렬 접근 방식을 사용할 필요가 없습니다. 순서를 보존하여 원하는 Promise 체인을 구성하려면 Array.prototype.reduce()가 더 적합합니다.
예:
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()); }
이 방법을 사용하면 "db. getUser" 호출은 연속적이므로 결과의 순서가 유지됩니다. 코드는 다음과 같이 호출할 수 있습니다.
var arrayOfEmailAddys = [...]; fetchUserDetails(arrayOfEmailAddys).then(function() { console.log('all done'); });
이 접근 방식은 복잡한 루프나 조건이 필요하지 않으며 비동기 작업을 처리하는 경우에도 Promise 체인의 적절한 실행을 보장합니다.
위 내용은 루프에서 약속 기반 코드의 동기 실행을 보장하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!