清除后 Javascript 重新运行超时
Javascript reruning timeout after being cleared
我有一个带有参数的函数,这些参数对这些参数执行一些操作,然后在一定超时的情况下将它们再次发送到自身现在我想清除此超时,但在某些时候我想回忆一下无论如何都使用其当前参数清除的超时来执行此操作?
var thread
$(document).ready(function(){
f(0, 0)
$('.pause').click(function(){
clearTimeout(thread);
});
$('.resume').click(function(){
thread; //want to rerun thread
});
f(x, y) {
thread = setTimeout(function(){
f(x + 1, y + 1);
}, 1000)
}
您只需
要在resume
单击处理程序中再次调用f(0, 0)
:
$('.resume').click(function(){
f(0, 0);
});
如果要从暂停x
值和y
值的位置继续,则需要先存储它们。试试这个:
var thread;
$(document).ready(function(){
var publicX, publicY;
f(0, 0);
$('.pause').click(function(){
clearTimeout(thread);
});
$('.resume').click(function(){
f(publicX, publicY);
});
function f(x, y) {
publicX = x;
publicY = y;
thread = setTimeout(function(){
f(++publicX, ++publicY);
}, 1000)
}
});
工作示例
请注意,由于 publicX
和 publicY
变量现在位于所有处理程序的范围内,因此不再需要将它们作为 f()
函数的参数包含在内。我将它们保留在此示例中,以防您有其他需要使用它们的逻辑。
var thread;
var x = 0;
var y = 0;
$(document).ready(function(){
f(x, y)
$('.pause').click(function(){
clearTimeout(thread);
});
$('.resume').click(function(){
f(x,y); //want to rerun thread
});
f(x, y) {
thread = setTimeout(function(){
f(x + 1, y + 1);
}, 1000)
}
相关文章:
- 重新运行上次进行的AJAX调用
- 如何在node+express中重新运行请求处理程序
- 我想让我的程序重新运行开头,有点像循环 JavaScript
- Chrome扩展-重定向当前选项卡后重新运行扩展脚本
- 在不重新运行jquery验证的情况下检查表单是否有效
- 如何重新运行Meteor出版物以刷新客户端上收藏的内容
- 当屏幕方向改变时,重新运行javascript函数
- 重新运行自定义Modernizr测试
- 手动触发 Karma 以重新运行测试
- 在本地存储之后重新运行脚本
- AngularJS重新运行控制器
- 在帧重新加载时检测帧更改或重新运行内容脚本
- 在浏览器空闲后保持设置超时函数运行
- 如何在角度中重新运行过滤器
- 在 DOM 修改后重新运行 jQuery 插件的任意方法
- 当$scope更改时重新运行反应式帮助程序
- AngularJS在ng-repeat中重新运行ng-if
- jQuery 在 ajax 加载的内容上重新运行脚本
- PHP脚本重新运行自己,直到进程完成.然后每周重新启动
- 清除后 Javascript 重新运行超时