【问题标题】:setTimeout(fun) with a single argument? (Timeout not specified)setTimeout(fun) 用一个参数? (未指定超时)
【发布时间】:2010-04-27 17:48:22
【问题描述】:

HTML5 specifications 声明 setTimeout 可以在没有额外的“超时”参数的情况下运行,该参数应该说明函数“处理程序”将在多少毫秒后被调度。

handle = window . setTimeout( handler [, timeout [, arguments ] ] )
   Schedules a timeout to run handler after timeout milliseconds. Any arguments are passed straight through to the handler.

但是,我找不到任何解释在没有设置“超时”时间段时会发生什么的地方。

一个示例用法是,Raphael 库中的 animation implementation

animationElements[length] && win.setTimeout(animation);

【问题讨论】:

  • 当前所有主流浏览器都可以接受一个参数,因此为避免混淆,值得指出的是浏览器不一定要符合 HTML5 才能支持此参数。
  • 这是在 JS 中执行延迟过程调用的绝妙方式 - “稍后/现在不执行 X”。如果您在事件处理程序中,由于状态/重新进入问题,可能不是调用某些函数的好时机。请注意,您不能保证实际执行时间,但它“很快”。
  • @Andy Mozilla MDC 将毫秒声明为强制参数。
  • @JBRWilkinson:确实,这也是延迟执行的好方法,如果触发特定事件,可以取消它。我已经多次使用过这种技术,它真的很有用。

标签: javascript settimeout


【解决方案1】:

http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#get-the-timeout

  1. 让 timeout 成为第二个参数 方法,如果参数为零 被省略了。

【讨论】:

  • 打败我 :-) +1。我打算在我自己的答案中添加(但也可以在这里添加),仅仅因为 timeout 参数为 0 并不一定意味着它会立即运行,当线程空闲时它仍然会排队运行,例如在所有当前代码执行完成之后。
  • 仅供参考,上面引用的文档已更改,现在只显示:“让超时成为该方法的第二个参数。”但是,Mozilla 文档确实在此处记录了此行为:developer.mozilla.org/en-US/docs/Web/API/WindowTimers/…
猜你喜欢
  • 2016-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-04
  • 1970-01-01
  • 1970-01-01
  • 2020-06-08
相关资源
最近更新 更多