我有一个进度条脚本,它轮询一个转储一些json数据的URL。然后,脚本根据所述json的内容(包括进度条)更新一些html值。
这是代码的简化版本:
function update_progress(status_url, index) {
bar_id = document.getElementById(String('bar' + index));
stage_id = document.getElementById(String('stage' + index));
$.getJSON(status_url, function(data) {
percent = parseInt(data['current'] * 100 / data['total']);
// change progress bar and stage_id values
bar_id.innerHTML = (percent + '%');
bar_id.style.width = (percent + '%');
stage_id.title = (data['status']);
stage_id.value = (data['status']);
stage_id.innerHTML = (data['status']);
// if state is unexpected then end poll
if (data['state'] != 'PENDING' && data['state'] != 'PROGRESS' && data['state'] != "COMPLETE") {
stage_id.innerHTML = (data['state']);
// otherwise keep polling every 1.5 seconds
} else {
setTimeout(function() {
update_progress(status_url, index);
}, 1500);
}
}
有时,status_url如果尚未编译json数据,则可能会返回500错误。因此,我有一个按钮,可以通过update_progress再次调用来重新启动此轮询。
问题: 如果用户单击“重新开始投票”按钮,则将有两个针对该活动的活动投票status_url。
一次可能会有许多不同的民意调查正在进行status_url-数量越多,响应速度就越慢。
所以我想避免能够轮询已经进行的事情
问题:是否可以检查JS中是否已在进行具有相同值的进程?
我知道这是低效的,并且在某个时候我将完全放弃JS来使用该轮询系统-但是,在实现此功能之前,我需要对当前版本进行一些快速的效率修补。
繁花不似锦
相关分类