> 웹 프론트엔드 > JS 튜토리얼 > JavaScript Promise Chain의 중간 Promise 결과에 어떻게 접근할 수 있나요?

JavaScript Promise Chain의 중간 Promise 결과에 어떻게 접근할 수 있나요?

Barbara Streisand
풀어 주다: 2024-12-24 06:39:17
원래의
255명이 탐색했습니다.

How Can I Access Intermediate Promise Results in JavaScript Promise Chains?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿