我想发起一个数据库请求,这需要几次时间和一个整数(42
)的响应。
setTimeout
中的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
响应?
答案 0 :(得分:2)
完全不知道你的情况,但为了获得渴望的结果,你可以做这样的事情。
var dbRequest = function (callback) {
setTimeout(function(){
console.log('Hello World! => 42');
callback(42);
}, 5000);
};
function initRequest(val){
var test = val + 1;
console.log('Incremented Value: ' + test);
}
dbRequest(initRequest);
在特定时间后调用回调函数,并使用此调用函数传递值以进行所需操作。