我正在尝试调用ajax请求来检查数据库的函数,每隔10秒查看一下我想要的信息是否已经到达,如果所需信息未到达60秒,我只想退出该功能。 我现在遇到的问题是,我的功能每10秒钟不会调用self.startInstantorCheck
,然后在60秒后退出到最后。 下面是函数试图让淘汰赛js检查数据是否每10秒来一次
self.startInstatorCheck = function(){
self.instatorStarts(true);
var MAX_WAIT_TIME_MS = 1 * 60 * 1000;
var POST_INTERVAL_MS = 10 * 1000;
var timeoutTime = null;
$.ajax({
type: 'POST',
url: BASEURL + 'index.php/moneyexchange/check_instantor_field/' + auth,
contentType: 'application/json; charset=utf-8'
})
.done(function(userinfo) {
if (timeoutTime == null) {
// Start of the timeout cycle:
timeoutTime = Date.now() + MAX_WAIT_TIME_MS;
}
if (userinfo.instantor_request > 12) {
self.allInstantorCheckMessages('Instantor data gathered');
} else {
if (Date.now() < MAX_WAIT_TIME_MS) {
setTimeout(self.startInstatorCheck(), POST_INTERVAL_MS);
} else {
self.allInstantorCheckMessages('Please go through instantor to ');
self.instatorStarts(true);
self.magicInstantorbtn2(true);
}
}
})
.fail(function(jqXHR, textStatus, errorThrown) {
self.errorMessage(errorThrown);
})
.always(function(data){
});
}
I am using knockout js, so would be great if the answers or help are related to knockout js.
你说这不叫每10和60这之后并没有结束?或者它不会每10秒钟呼叫一次,但60秒后它会结束? –
@PatrickMotard我想说的是,它应该调用函数10秒来查看是否获得了instantor_request> 12,并且在60秒后如果没有instantor_request的结果,那么它应该退出函数并执行此步骤 'self.allInstantorCheckMessages('请通过instantor到'); self.instatorStarts(true); self.magicInstantorbtn2(true);' – FaF
对不起,如果我不清楚。我知道你的目标是什么。我要求的是澄清什么不起作用。什么部分不起作用。它在60秒后继续轮询吗?它是否根本不投票? –