비동기 함수는 작업을 동시에 실행하고 작업 결과를 나타내는 Promise를 반환하여 비차단 처리를 가능하게 합니다. 그러나 적절한 처리 없이 실행될 경우 비동기 함수는 Promise {
제공된 코드 스니펫에서 AuthUser 함수는 google.login 함수의 결과를 나타내는 Promise를 반환합니다. 그러나 userToken = AuthUser(data)에서 AuthUser에 대한 후속 호출은 해결을 처리하는 데 콜백이 사용되지 않기 때문에 해결되지 않은 약속이 발생합니다.
Promise의 결과를 캡처하려면, .then 또는 .catch 메소드가 Promise에 첨부되어야 합니다. 이러한 메서드를 사용하면 Promise의 해결 또는 거부를 각각 처리할 수 있습니다.
다음 수정 사항은 콜백에서 userToken Promise의 값을 캡처합니다.
let userToken = AuthUser(data); userToken.then(function(result) { console.log(result); // "Some User token" });
약속은 본질적으로 전방향적입니다. 해결되면 Promise의 현재 상태에 관계없이 결과가 .then 또는 .catch 핸들러로 전달됩니다. 다음 .then 핸들러는 이전 .then에서 반환된 연결된 Promise의 해결된 값을 항상 수신합니다.
값 반환:
initPromise() .then(function(result) { console.log(result); // "initResolve" return "normalReturn"; }) .then(function(result) { console.log(result); // "normalReturn" });
약속 연결:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!