【发布时间】:2015-10-28 08:31:51
【问题描述】:
我为 Chrome 编写扩展程序。当后台页面不活动时,我需要运行延迟任务。由于 setTimeout 在后台选项卡中不起作用,我尝试使用 setInterval 模拟 setTimeout,如下面的代码(位于内容脚本中):
window.timings = [];
function set_timeout(func, time){
var now = new Date() / 1;
window.timings.push({
func: func,
time: time + now
});
}
function tick(){
var now = new Date() / 1;
window.timings = window.timings.filter(function(delay_obj){
if (now > delay_obj.time){
delay_obj.func.call();
return false;
} else {
return true;
}
});
}
$(function() {
setInterval(tick, 1000);
// some code
});
并且在延迟函数中调用 set_interval 时不起作用:
set_timeout(function(){
console.log('func1');
}, 2000);
set_timeout(function(){
console.log('func2');
set_timeout(function(){
console.log('func3');
}, 3000);
}, 3000);
输出:
func1
func2
为什么func3不显示?
【问题讨论】:
标签: javascript google-chrome google-chrome-extension