>웹 프론트엔드 >JS 튜토리얼 >비동기 JavaScript에서 Promise 해결을 효과적으로 처리하려면 어떻게 해야 합니까?

비동기 JavaScript에서 Promise 해결을 효과적으로 처리하려면 어떻게 해야 합니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-23 11:47:33753검색

How Can I Effectively Handle Promise Resolutions in Asynchronous JavaScript?

Promise 및 비동기 실행

비동기 함수는 작업을 동시에 실행하고 작업 결과를 나타내는 Promise를 반환하여 비차단 처리를 가능하게 합니다. 그러나 적절한 처리 없이 실행될 경우 비동기 함수는 Promise { } 예상 값 대신 자리 표시자를 사용합니다.

제공된 코드 스니펫에서 AuthUser 함수는 google.login 함수의 결과를 나타내는 Promise를 반환합니다. 그러나 userToken = AuthUser(data)에서 AuthUser에 대한 후속 호출은 해결을 처리하는 데 콜백이 사용되지 않기 때문에 해결되지 않은 약속이 발생합니다.

Promise 해결 처리

Promise의 결과를 캡처하려면, .then 또는 .catch 메소드가 Promise에 첨부되어야 합니다. 이러한 메서드를 사용하면 Promise의 해결 또는 거부를 각각 처리할 수 있습니다.

다음 수정 사항은 콜백에서 userToken Promise의 값을 캡처합니다.

let userToken = AuthUser(data);
userToken.then(function(result) {
   console.log(result); // "Some User token"
});

Promise 해결 동작 이해

약속은 본질적으로 전방향적입니다. 해결되면 Promise의 현재 상태에 관계없이 결과가 .then 또는 .catch 핸들러로 전달됩니다. 다음 .then 핸들러는 이전 .then에서 반환된 연결된 Promise의 해결된 값을 항상 수신합니다.

Promise 해결 세부 정보

  1. .then 함수에서 반환된 값은 해당 Promise의 해결된 값.
  2. .then 함수가 Promise를 반환하는 경우 연결된 Promise의 해결된 값은 다음으로 전달됩니다. .then.

시연 예시

  1. 값 반환:

    initPromise()
      .then(function(result) {
     console.log(result); // "initResolve"
     return "normalReturn";
      })
      .then(function(result) {
     console.log(result); // "normalReturn"
      });
  2. 약속 연결:

    initPromise()
      .then(function(result) {
     console.log(result); // "initResolve"
     return new Promise(function(resolve, reject) {
        setTimeout(function() {
           resolve("secondPromise");
        }, 1000)
     })
      })
      .then(function(result) {
     console.log(result); // "secondPromise"
      });

이러한 원칙을 준수하면 비동기 작업을 효과적으로 처리하고 해결된 값을 캡처할 수 있습니다.

위 내용은 비동기 JavaScript에서 Promise 해결을 효과적으로 처리하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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