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' ,但它是相同的异步问题 –