> 웹 프론트엔드 > JS 튜토리얼 > JavaScript의 비동기 콜백 함수에서 값을 검색하는 방법은 무엇입니까?

JavaScript의 비동기 콜백 함수에서 값을 검색하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-26 10:48:11
원래의
441명이 탐색했습니다.

How to Retrieve Values from Asynchronous Callback Functions in JavaScript?

비동기 콜백 함수에서 값을 검색할 수 없습니다

일반적으로 발생하는 이 문제에는 스택 오버플로에 대한 수많은 스레드가 있습니다. 광범위한 검색에도 불구하고 일부 개발자는 여전히 콜백의 값에 액세스하는 데 어려움을 겪고 있습니다.

가장 큰 문제는 동기 메서드가 비동기 호출에서 값을 반환할 수 없다는 사실입니다. 제공된 예에 설명된 대로:

function foo(address){

  // google map stuff
  geocoder.geocode( { 'address': address}, function(results, status) {
      results[0].geometry.location; // I want to return this value
  })

}
foo(); //result should be results[0].geometry.location; value
로그인 후 복사

원하는 값을 직접 반환하려고 시도하면 "정의되지 않은" 응답이 발생합니다. 그 후 수정이 제안되었지만 소용이 없었습니다.

이러한 시도의 예:

function foo(address){
  var returnvalue;    
  geocoder.geocode( { 'address': address}, function(results, status) {
      returnvalue = results[0].geometry.location; 
  })
  return returnvalue; 
}
foo(); //still undefined
로그인 후 복사

해결 방법

해결 방법에는 통과가 필요합니다. foo 함수에 대한 콜백, 이후에 반환값을 수신함 값:

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

foo("address", function(location){
  alert(location); // this is where you get the return value
});
로그인 후 복사

비동기 함수 및 콜백 구조:

비동기 내부 함수 호출에서는 응답을 검색하기 위해 동일하게 비동기 래핑 함수를 사용해야 합니다.

도서관 및 대안 접근 방식:

Q와 같은 Promise 라이브러리를 활용하면 수많은 콜백 처리가 단순화될 수 있습니다. 이러한 프레임워크는 비동기 작업을 관리하고 그 결과에 보다 효율적이고 구조화된 방식으로 액세스하는 편리한 수단을 제공합니다.

위 내용은 JavaScript의 비동기 콜백 함수에서 값을 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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