gpt4 book ai didi

javascript - 无法停止在 setTimeout 上运行的函数

转载 作者:行者123 更新时间:2023-11-30 06:56:08 25 4
gpt4 key购买 nike

我有以下 javascript 函数,每 10 秒运行一次以将一些数据与数据库同步。

function sync(){
latestID = $("#dataDiv tbody tr:first").attr("data-key");
var url = '<?=$model['fn']?>';
$.ajax({
url: url,
type: 'post',
dataType: 'json',
data:{latestID: latestID},
success: function (result) {
//Do some stuff
}
});
setTimeout(sync, 10000);
}

此函数在选中 Activate Sync 复选框时开始执行。但是一旦它运行,它不会在取消选中复选框时停止。 下面是我已经尝试过的方法,它可以执行任何操作,并且该函数会一直执行,直到页面重新加载(默认情况下未选中该复选框)

function checkSync(){
var doSync;

if($('#keepChecking').is(':checked')){
doSync = sync();
//alert("checked"); return false;
}else{
clearTimeout(doSync);
return false;
//alert("not checked"); return false;
}
}

最佳答案

这应该处理超时和 ajax 请求:

var ajaxRequest,
syncTimeout;

function sync(){
latestID = $("#dataDiv tbody tr:first").attr("data-key");
var url = '<?=$model['fn']?>';
ajaxRequest = $.ajax({
url: url,
type: 'post',
dataType: 'json',
data:{latestID: latestID},
success: function (result) {
//Do some stuff
}
});
syncTimeout = setTimeout(sync, 10000);
}

function checkSync(){
if($('#keepChecking').is(':checked')){
sync();
//alert("checked"); return false;
}else{
clearTimeout(syncTimeout);
ajaxRequest.abort();
return false;
//alert("not checked"); return false;
}
}

关于javascript - 无法停止在 setTimeout 上运行的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46889237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com