저는 자바 스크립트에서 콜백 형식의 프로그래밍을 처음 사용합니다. 함수 호출이 콜백을 통해 완료 될 때까지 기다리는 코드가 있습니까? 설명해 드리겠습니다. 다음 함수는 숫자를 취해이를 기반으로 결과를 반환합니다.자바 스크립트에서 콜백이 호출 될 때까지 일시 중지
function get_expensive_thing(n) {
return fetch_from_disk(n);
}
지금까지 쉽게 알 수 있습니다. 그러나 fetch_from_disk
대신 콜백을 통해 결과를 반환하면 어떻게해야합니까? 과 같이하십시오 return
익명 함수의 범위, 보다는 get_expensive_thing
기능에 있기 때문에
function get_expensive_thing(n) {
fetch_from_disk(n, function(answer) {
return answer; // Does not work
});
}
위는 작동하지 않습니다.
두 가지 가능한 "해결책"이 있지만 모두 부적절합니다. 하나는 자체가 콜백 대답에 get_expensive_thing
를 리팩토링하는 것입니다
function get_expensive_thing(n, callback) {
fetch_from_disk(n, function(answer) {
callback(answer);
});
}
다른 하나는 fetch_from_disk
을 코딩하는 것입니다,하지만이 옵션을 선택하지 않습니다. 즉, fetch_from_disk
콜백을 호출 할 때까지, 그 답을 반환 기다립니다 - get_expensive_thing
의 원하는 동작을 유지하면서
우리는 어떻게 원하는 결과 를 달성 할 수 있습니까?
에 추가 할 수 있습니다. – JohnFx
그 정도면 충분합니다. 여기 내 목적은 콜백을 통해 얻은 값을 반환하는 함수를 만드는 것이 실제로 불가능하다는 것을 확실히 확인하는 것이 었습니다. – jameshfisher