0
정수 (42
)를 사용하여 여러 시간과 응답을 요구하는 데이터베이스 요청을 시작하려고합니다. setTimeout
(dbRequest()
)이이 요청을 대표합니다.비동기 함수 호출
응답 된 정수는 initRequest
함수에서 1 씩 증가해야합니다. 따라서 initRequest
은 43
을 반환해야합니다. 불행하게도 var test = cb() + 1;
var dbRequest = function() {
setTimeout(function(){
console.log('Hello World! => 42');
return 42;
}, 5000);
};
var initRequest = function (cb){
var test = cb() + 1;
console.log('Incremented Value: ' + test);
return test;
};
initRequest(dbRequest);
는 setTimeout
기다리고 NaN
으로 계산되지 않습니다. 출력 :
Incremented Value: NaN
// 5 sec delay
Hello World! => 42
가 어떻게이 기능 비동기를 만들 수 있도록 dbRequest
응답 initRequest
대기?
거꾸로하는 것 같습니다. 비동기 함수 인 _is_은 대기하지 않는다는 것을 의미합니다. – Barmar
비동기 작업의 결과에 의존하는 모든 것은 콜백 함수에서 수행되어야합니다. Javascript는 단일 스레드이며 원래 기능을 유지할 수없고 동시에 비동기 호출을 실행할 수 없습니다. – Barmar
기본적으로 같은 문제가 있습니다 : http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call 그 질문은'setTimeout' 대신'AJAX' 요청을 다루고 있습니다. ,하지만 비동기 문제 –