【发布时间】:2014-08-04 23:26:07
【问题描述】:
我有一个调用某些服务并返回响应的函数。如果响应为 FALSE,它会等待 1 秒以再次询问服务(然后可能返回 TRUE)。
我怎样才能调用我的函数“checkService()”一次,并获得真正的价值? (第一次或第二次尝试,由函数决定)我在函数内部设置了 RET 值,但函数总是返回第一个 RET,因为 setTimeout 是异步的。
换句话说,我需要一些“睡眠”技巧,或者任何解决方案(也可能是 jQuery)。
function checkService() {
//this may return TRUE or FALSE
var RET = someServiceResponse();
// here waits 1 second, then ask the service again
if( RET == true ) {
return true;
} else {
setTimeout(
function() {
//it must return the second response of the service
RET = someServiceResponse();
},
1000
);
// I want the checkService() return the response after de timeout
return RET;
}
}
function alertResponse() {
alert( checkService() );
}
【问题讨论】:
-
someServiceResponse 是否从 ajax 调用中获取结果?这可能是您问题的核心。
-
虽然 1 秒的等待似乎很有用,但如果调用需要更多时间才能返回,它很容易中断。我建议将此功能与实际传递响应时触发的回调函数分开。
-
特拉维斯,没有。但是,我不介意等待时间超过 1 秒。时间不重要,只需要等待一些(半秒左右)再检查一下即可
标签: javascript asynchronous settimeout