定期更新 Javascript 定时器间隔
Update Javascript Timer Interval periodically
我正在创建一个 javascript 函数来显示 运行ning 任务的状态 [每 1 小时 运行 并且需要一些时间才能完成]
此功能将让最终用户知道任务当前是否 运行ning 或未
为了在加载事件中执行此操作,我创建了一个函数并为此设置了 10 分钟的间隔,因此它会每隔 10 分钟告诉用户任务的状态
如果任务在服务器上被发现为 运行ning,我想将间隔减少到 1 分钟。因此,一旦任务完成,用户就会有一个想法,他们可以重新开始使用 Web 门户。
一旦检测到它不是 运行ning 想再次将间隔恢复到原来的 10 分钟。
当前的实现如下
$(function () {
loadSyncStatus();
setInterval(function () {
// Invoke function every 10 minutes (600000)
loadSyncStatus();
}, 600000);
});
function loadSyncStatus() {
var action_url = '@Url.Content("~/Controller/GetSyncStatus")';
$.ajax({
url: action_url,
type: 'GET',
contentType: "application/json; charset=utf-8",
dataType: 'json',
success: function (response) {
$("#dataSyncStatus").html(response.message);
if(response.running_flag=true){
//check the status every 1 minute *****TODO****
}
else{
//reset the interval back to 10 minutes *****TODO****
}
}
})
}
您可以根据 id 使用 clearInterval
:
let id = setInterval(function () {
// Invoke function every 10 minutes (600000)
loadSyncStatus();
}, 600000);
和
if(response.running_flag=true){
clearInterval(id);
id = setInterval(loadSyncStatus, 60000);
}
else{
clearInterval(id);
id = setInterval(loadSyncStatus, 600000);
}
请试试这个
它会在 600000
之后调用 loadSyncStatus()
var myTimeOut=0;
$(function () {
loadSyncStatus();
myTimeOut = setTimeout(loadSyncStatus, 600000);
});
function loadSyncStatus() {
clearTimeout(myTimeOut);
myTimeOut = setTimeout(loadSyncStatus, 600000);
var action_url = '@Url.Content("~/Controller/GetSyncStatus")';
$.ajax({
url: action_url,
type: 'GET',
contentType: "application/json; charset=utf-8",
dataType: 'json',
success: function (response) {
$("#dataSyncStatus").html(response.message);
if(response.running_flag=true){
//check the status every 1 minute *****TODO****
}
else{
//reset the interval back to 10 minutes *****TODO****
}
}
})
}
我正在创建一个 javascript 函数来显示 运行ning 任务的状态 [每 1 小时 运行 并且需要一些时间才能完成] 此功能将让最终用户知道任务当前是否 运行ning 或未
为了在加载事件中执行此操作,我创建了一个函数并为此设置了 10 分钟的间隔,因此它会每隔 10 分钟告诉用户任务的状态
如果任务在服务器上被发现为 运行ning,我想将间隔减少到 1 分钟。因此,一旦任务完成,用户就会有一个想法,他们可以重新开始使用 Web 门户。 一旦检测到它不是 运行ning 想再次将间隔恢复到原来的 10 分钟。
当前的实现如下
$(function () {
loadSyncStatus();
setInterval(function () {
// Invoke function every 10 minutes (600000)
loadSyncStatus();
}, 600000);
});
function loadSyncStatus() {
var action_url = '@Url.Content("~/Controller/GetSyncStatus")';
$.ajax({
url: action_url,
type: 'GET',
contentType: "application/json; charset=utf-8",
dataType: 'json',
success: function (response) {
$("#dataSyncStatus").html(response.message);
if(response.running_flag=true){
//check the status every 1 minute *****TODO****
}
else{
//reset the interval back to 10 minutes *****TODO****
}
}
})
}
您可以根据 id 使用 clearInterval
:
let id = setInterval(function () {
// Invoke function every 10 minutes (600000)
loadSyncStatus();
}, 600000);
和
if(response.running_flag=true){
clearInterval(id);
id = setInterval(loadSyncStatus, 60000);
}
else{
clearInterval(id);
id = setInterval(loadSyncStatus, 600000);
}
请试试这个
它会在 600000
loadSyncStatus()
var myTimeOut=0;
$(function () {
loadSyncStatus();
myTimeOut = setTimeout(loadSyncStatus, 600000);
});
function loadSyncStatus() {
clearTimeout(myTimeOut);
myTimeOut = setTimeout(loadSyncStatus, 600000);
var action_url = '@Url.Content("~/Controller/GetSyncStatus")';
$.ajax({
url: action_url,
type: 'GET',
contentType: "application/json; charset=utf-8",
dataType: 'json',
success: function (response) {
$("#dataSyncStatus").html(response.message);
if(response.running_flag=true){
//check the status every 1 minute *****TODO****
}
else{
//reset the interval back to 10 minutes *****TODO****
}
}
})
}