>웹 프론트엔드 >JS 튜토리얼 >JavaScript의 비동기 콜백 함수에서 값을 반환하려면 어떻게 해야 합니까?

JavaScript의 비동기 콜백 함수에서 값을 반환하려면 어떻게 해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-27 01:15:09354검색

How Can I Return Values from Asynchronous Callback Functions in JavaScript?

비동기 콜백: 값 반환

비동기 콜백 함수에서 값을 반환하는 것은 비차단 특성으로 인해 어려울 수 있습니다. 문제와 해결 방법은 다음과 같습니다.

제공된 예에서:

function foo(address) {
  // Google Maps stuff
  geocoder.geocode({'address': address}, function(results, status) {
    // Unable to return results[0].geometry.location synchronously
  });
}

비동기 지오코드 콜백 내에서 반환하려는 값을 동기식으로 검색할 수 없습니다. 그렇게 시도하면 정의되지 않은 값이 발생합니다.

해결 방법: 결과가 포함된 콜백

값을 얻으려면 foo에 콜백 함수를 전달할 수 있습니다. 결과:

function foo(address, callback) {
  geocoder.geocode({'address': address}, function(results, status) {
    callback(results[0].geometry.location); 
  });
}

foo에 대한 콜백에서 위치에 액세스할 수 있습니다. 값:

foo("address", function(location) {
  alert(location); // Result obtained here
});

비동기 함수 체인

비동기 호출이 다른 함수 내에 중첩된 경우 반환 값을 얻을 수 있도록 해당 함수도 비동기식이어야 합니다. . 복잡한 시나리오의 경우 Q와 같은 Promise 라이브러리를 사용하여 비동기 작업을 효율적으로 관리하는 것이 좋습니다.

위 내용은 JavaScript의 비동기 콜백 함수에서 값을 반환하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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