Javascript只使用setInterval()调用一个子函数一次
Javascript call only once a child function with setInterval()
我只想用setInterval调用myfun1一次。我想避免使用全局变量。读这个,但它不起作用(只是每2000毫秒调用一次函数)。自然,我需要每2000毫秒调用一次main()。
(function($){
setinterval(main,2000);
function main (){
if(/*condition*/) return;
function callItOnce(fn) {
var called = false;
return function() {
if (!called) {
called = true;
return fn();
}
return;
}
}
myfun1 = callITOnce(myfun1);
myfun1();
function myfun1(){/*code*/};
function myfun2(){/*code*/};
function myfun3(){/*code*/};
})(jquery);
使用标志:
(function($){
var timer = setInterval(main,2000), ran=true;
function main() {
if(/*condition*/) return;
if (ran) { //runs when ran=true, which is only the first time
myfun1();
ran = false; //since it's set to false here
}
function myfun1(){/*code*/};
function myfun2(){/*code*/};
function myfun3(){/*code*/};
})(jquery);
您编写的callItOnce
函数应该可以工作。您只需要在setInterval
调用之外声明该函数。否则,它每次都会被重新定义。
(function () {
function myfun1(){/*code*/};
function myfun2(){/*code*/};
function myfun3(){/*code*/};
function callItOnce(fn) {
var called = false;
return function() {
if (!called) {
called = true;
return fn();
}
return;
}
}
myfun1 = callItOnce(myfun1);
function main() {
if(/*condition*/) return;
myfun1();
}
setInterval(main, 2000);
}());
解决这一问题的一个简单方法是在函数本身上使用变量。
function myFunc1(){
if(arguments.callee.done){return;}
arguments.callee.done = true;
}
这样,方法myFunc1上的"done"变量将确保该方法只执行一次。
setInterval返回一个值,您可以将该值传递给clearInterval以停止调用回调。
var i = 0;
var timeout_id = setTimeout(function(){
console.log(i);
if(i >= 5){ clearTimeout(timeout_id) }
i++;
})
相关文章:
- 引导程序崩溃一次只能看到一个
- 有没有一个抽象层,这样我就可以集成一次,然后使用pusher、pubnub或faye
- 一次又一次地在新的和相同的选项卡中打开一个url
- 如何在设定的时间间隔内一次只显示一个图像
- 复选框:一次只允许单击一个复选框
- 使用 JavaScript 一次为一个元素设置多个属性
- 一次显示一个隐藏指令-AngularJS
- 我可以使用JS一次使用JSON数组中的一个字符串吗
- 一次显示一个指令AngularJS
- 运行“;非“;单击另一个函数中的函数仅一次
- 复选框一次选中一个不在gridview中工作
- 复选框一次选中一个不起作用
- 什么'是从对象列表中一次编辑一个对象的正确Angular/Firebase方法
- 在一组复选框中,一次只允许选择一个
- Slding表单不会一次显示一个表单
- 每天递减一个变量一次 - Javascript
- 如何在下一次 AJAX 调用中访问从一个 AJAX 调用返回的变量
- 如何每 10 秒调用一次 JS 函数,然后以角度激活一个函数
- 重置功能,因此一次只有一个打开
- JavaScript-如何创建一个一次只能运行一次的函数