Promise Chains의 중간 결과 관리
문제:
Promise Chain을 생성할 때 최종 콜백 내에서 중간 Promise 결과에 액세스하는 것이 어려울 수 있습니다. 다음 예에서는 promiseB의 콜백 내에서 promiseA의 결과에 어떻게 액세스할 수 있나요?
function getExample() { return promiseA(…).then(function(resultA) { // Processing return promiseB(…); }).then(function(resultB) { // How can we access resultA here? }); }
해결책: 체인 깨기
중간 결과에 액세스하려면 약속 체인의 경우 체인을 별도의 구성 요소로 나누는 것이 가장 좋습니다. 이를 통해 동일한 Promise에 여러 콜백을 연결하고 필요할 때 해결된 값에 액세스할 수 있습니다. 다음은 개선된 코드 버전입니다.
function getExample() { var a = promiseA(…); var b = a.then(function(resultA) { // Processing return promiseB(…); }); return Promise.all([a, b]).then(function([resultA, resultB]) { // Processing using both resultA and resultB return …; }); }
이 접근 방식은 Promise.all() 메서드를 활용하여 체인에 있는 모든 Promise의 배열을 생성합니다. 그런 다음 Promise.all() 결과에 또 다른 then() 콜백을 연결하여 확인된 값의 배열을 받는 함수를 전달합니다. 이를 통해 최종 콜백 내에서 resultA와 resultB 모두에 쉽게 액세스할 수 있습니다.
대체 솔루션:
ES5에서는 .spread() 메서드를 사용하여 다음을 달성할 수 있습니다. 유사한 기능:
… return Promise.all([a, b]).then(.spread(function(resultA, resultB) { … });
Bluebird는 이 프로세스를 단순화하는 전용 Join() 메서드를 제공합니다. 추가:
… return Promise.join(a, b, function(resultA, resultB) { … });
체인을 끊고 적절한 Promise 연결자를 사용하면 중간 Promise 결과에 우아하게 액세스하고 조작하여 명확하고 효율적인 코드 구조를 보장할 수 있습니다.
위 내용은 JavaScript Promise Chain의 중간 Promise 결과에 어떻게 접근할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!