0
我想發起一個數據庫請求,這需要幾個時間和一個整數的響應(42
)。 setTimeout
in dbRequest()
代表此請求。異步調用函數
在函數initRequest
中,響應的整數應該加1。因此initRequest
應返回43
。
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);
可惜var test = cb() + 1;
不等待setTimeout
與NaN
計算。 輸出:
Incremented Value: NaN
// 5 sec delay
Hello World! => 42
我怎樣才能讓這個函數異步的,讓initRequest
等待dbRequest
迴應?
你似乎有東西倒退。函數_is_異步,這意味着它不會等待。 – Barmar
任何取決於異步操作結果的東西都必須在其回調函數中完成。 Javascript是單線程的,它不能停留在原始函數中,而是同時執行異步調用。 – Barmar
基本上同樣的問題在這裏:http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call該問題處理'AJAX'請求,而不是'setTimeout' ,但它是相同的異步問題 –