我正在运行一个函数来检查数据库条目是否存在。
在我的页面加载中,我检查一个元素是否存在,如果它存在,我会使用它setInterval
来运行一个函数。像这样:
if ( $('#encoding').length ) {
console.log("auto_update start");
var update = setInterval(auto_update, 12000);
}
然后在我的auto_update
函数中发生这种情况
function auto_update() {
console.log("auto_update running");
$.ajax({
type: 'POST',
url: ajaxurl,
data: {
action: "dhf_ajax_router",
perform: "dhf_check_status", // the function we want to call
post_id: $('#post_id').val(),
nonce: $('#dhf-video-meta-nonce').val()
},
success: function(response) {
if ( response === "continue" ) {
console.log("still encoding");
} else {
clearInterval(update);
console.log("complete " + response);
}
}
});
}
问题是如果$('#encoding')
在开始时页面上不存在并且由用户手动触发:
$(document).on("click", ".run_encode", function(){
// doing the necessary stuff here.
if ( response === "sent" ) {
// more stuff
var update = setInterval(auto_update, 12000);
}
}); // end .run_encode
然后clearInterval(update)
它不起作用,它最终陷入无限循环。
我不知道为什么。在这两种情况下都设置了带有名称的间隔update
,那么为什么在第二种情况下清除它不起作用呢?