如何在确定的时间内停止setTimeout

时间:2016-06-21 14:32:06

标签: javascript time set settimeout cleartimeout

var time = 1000;
var point = 0;
function interval() { timeout = setTimeout(increment, time);}
function increment(){point += 1;document.getElementById("pul").value = point;interval();}
time2 = 3000;
function fermafatica() {setInterval(ferma, time2);}
function ferma(){clearTimeout(timeout)}

我需要在interval()中停止interval()函数或setTimeout仅1000ms,然后让它保持工作

3 个答案:

答案 0 :(得分:0)

你可以尝试:

setTimeout(function() {
    z();
    // Do anything else here
}, 1000);

setTimeout函数在一段时间后运行给定的函数。这将调用z()函数,该函数在提供的1000 ms时间后清除超时。

编辑:一切:见下文

var time = 1000;
var point = 0;
function interval() { timeout = setTimeout(increment, time);}
function increment(){point += 1;document.getElementById("pul").value = point;interval();}
time2 = 3000;
function fermafatica() {setInterval(ferma, time2);}
function ferma(){clearTimeout(timeout)}

更改function fermafatica() {setInterval(ferma, time);}

function fermafatica() {setTimeout(ferma, time);}

答案 1 :(得分:0)

您是否在询问X秒后如何清除超时?我会考虑在重复函数中只有一个静态变量(让我们称之为X)计数,如果函数每10ms重复一次,并且你希望它运行1000ms,那么当x == 100时,清除超时。

答案 2 :(得分:0)

好吧......我"避免"问题....我需要停止setTimeout 1000ms,然后让它正常工作...我试过......而不是暂停setTimeout我把另一个时间var。

 var time = 1000;
    var timecache = 1000;
    fatica = 3000;
    sudore = 3000;
    function interval() { timeout = setTimeout(increment, time);} //here setTimeout uses var time//
    function increment(){console.log(time);point += 1;document.getElementById("pul").value = point;interval();}
    function fermafatica() {time = timecache;setInterval(ferma, fatica);} //here the function equals time to timecache so vas time is always 1000ms//
    function ferma(){time = 10000; setTimeout(fermafatica, sudore);} // then here I transformed the time in 10000 so the first function will take 10000 instead of 1000 in setTimeout//
//plus i put a setTimeout to recall function fermafatica() that reset the time to 1000//

这就是我想要的......我避免了这个问题,并找到了另一种方法来做到这一点......但它确实有效......