一个函数内的 JavaScript setTimeout setInterval

标签 javascript anonymous-function setinterval

我想我可能太累了,但我一辈子都无法理解这一点,我认为这是由于缺乏 javascript 知识所致

var itv=function(){
 return setInterval(function(){
  sys.puts('interval');
 }, 1000);
}
var tout=function(itv){
 return setTimeout(function(){
  sys.puts('timeout');
  clearInterval(itv);
 }, 5500);
}

有了这两个函数我就可以调用了

a=tout(itv());

并让一个循环计时器运行 5.5 秒然后退出,基本上。



按照我的逻辑,这应该可行,但根本不行

var dotime=function(){
 return setTimeout(function(){
  clearInterval(function(){
   return setInterval(function(){
    sys.puts("interval");
   }, 1000);
  });
 }, 5500);
}

任何对此问题的见解都将不胜感激。

最佳答案

它无法工作,因为您的 setInterval 将在超时后调用!你原来的方法是正确的,你仍然可以把它包装成一个函数:

var dotime=function(){
  var iv = setInterval(function(){
    sys.puts("interval");
  }, 1000);
  return setTimeout(function(){
    clearInterval(iv);
  }, 5500);
};

关于一个函数内的 JavaScript setTimeout setInterval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2464522/

相关文章:

c# - 使用 .Net 测试 JavaScript 类 - 最佳实践?

javascript - jQuery可变宽度到高度调整与自定义滚动条

javascript - 未捕获的语法错误 : Unexpected Identifer, 也是匿名函数错误

javascript - 使用 javascript setInterval 函数,一个 div 启动内容到 fadeToggle,另一个 div 停止 fadeToggle 动画

javascript - 自定义类中的原生JS : "Uncaught TypeError: Cannot set property ' innerHTML' of undefined"

javascript - Knockout js 从其他 View 模型收集数据

javascript - 你可以使用 jQuery(this) 和 :after together?

jquery - setTimeout 不会因匿名函数而延迟

matlab - 如何以字符串形式安全地操作 MATLAB 匿名函数

javascript - 如何以 0 秒启动 setInterval 函数但在给定时间内重复它?