>웹 프론트엔드 >JS 튜토리얼 >JavaScript `.then()` 체인에서 중간 Promise 결과에 어떻게 액세스할 수 있나요?

JavaScript `.then()` 체인에서 중간 Promise 결과에 어떻게 액세스할 수 있나요?

DDD
DDD원래의
2024-12-26 00:08:09205검색

How Can I Access Intermediate Promise Results in a JavaScript `.then()` Chain?

.then() 체인의 중간 Promise 결과에 액세스

Promise는 코드에서 비동기 작업을 관리하는 편리한 방법을 제공합니다. 그러나 때로는 .then() 체인 내의 중간 Promise 결과에 액세스해야 하는 시나리오가 발생할 수 있습니다.

도전

다음 Promise 체인을 고려하세요.

function getExample() {
    return promiseA(…).then(function(resultA) {
        // Some processing
        return promiseB(…);
    }).then(function(resultB) {
        // More processing
        return // How do I gain access to resultA here?
    });
}

이 체인에서는 promiseA()의 결과에 대한 .then() 콜백 내에서 액세스할 수 없습니다. 약속B(). 최종 계산에 두 결과를 모두 사용해야 하는 경우 문제가 될 수 있습니다.

체인 끊기

이 제한을 극복하려면 체인을 별도로 분리할 수 있습니다. 라이브러리에서 제공하는 promise 연결자를 사용하세요. 다음 리팩토링을 고려하세요.

function getExample() {
    var a = promiseA(…);
    var b = a.then(function(resultA) {
        // some processing
        return promiseB(…);
    });
    return Promise.all([a, b]).then(function([resultA, resultB]) {
        // more processing
        return // something using both resultA and resultB
    });
}

이 접근 방식은 Promise.all을 사용하여 결과를 최종 .then() 콜백에 전달하기 전에 두 Promise가 모두 해결될 때까지 기다립니다.

기타 옵션

  • 구조 분해: ES6에서는 Promise.all에서 반환된 배열을 개별 변수로 분해할 수 있습니다.
  • 확산 연산자: ES6에서는 배열 요소를 콜백에 분산시키는 데 사용할 수 있는 확산 연산자도 지원합니다. 인수.
  • 조인 방법(블루버드): 블루버드는 인수의 조합을 단순화하는 전용 조인 기능을 제공합니다. 여러 Promise를 하나의 결과로 만듭니다.

체인을 끊고 이러한 대안을 사용하면 중간 Promise 결과에 쉽게 액세스하고 명확한 모듈식 코드 구조를 유지할 수 있습니다.

위 내용은 JavaScript `.then()` 체인에서 중간 Promise 결과에 어떻게 액세스할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.