// Invoking the first time:
setInterval/anonymous/function// {
console.log/"bar"/;
}///, 4000/;
// Not invoking the first time:
setInterval/anonymous/function// {
console.log/"foo"/;
}/, 4000/;
// Or simple:
setInterval/function// {
console.log/"baz"/;
}, 4000/;
14 个回复
三叔
赞同来自:
但是,有很好的理由避免
- 特别是,在某些情况下整个货物
事件可能会立即到达,没有任何延迟。 另一个原因是,如果要停止循环,则必须明确地调用
, 您必须记住从源呼叫返回的描述符是什么意思
.
因此,替代方法是让自己触发
用于使用后续呼叫
:
这确保了
至少
范围间隔
在挑战之间。 如果有必要,它还有助于取消周期 - 你只是不打电话
, 当您实现循环完成条件时。
更好,你可以把它全部包装在一起
立即引起表达式
, 它创建一个函数,然后按照上述调用自身,并自动启动循环:
这决定了函数并立即开始循环。
莫问
赞同来自:
显然,有很多方法可以做到,但这是我可以提出的最短方法。
董宝中
赞同来自:
表现得像
也
, 但与他一起
只要
不同之处在于函数在开始时立即调用。
这是我解决这个问题的解决方案:
这个解决方案的优势:
现有代码使用
, 可以通过替代方便调整
在严格模式下工作
它适用于现有的命名功能和 closures
您仍然可以使用返回值并将其传输到
之后
例子:
如果你真的需要使用
, 然后你也可以替换原件
. 因此,当在现有代码添加此代码时,没有必需的代码更改:
然而,这里应用了上面列出的所有优点,但不需要更换。
君笑尘
赞同来自:
提供此类行为的函数:
...
然后用它使用:
卫东
赞同来自:
设置第三个论点 setInterval 在 true, 它将在呼叫后立即工作 setInterval:
或降低第三个论点,它将保持其初始行为:
一些浏览器都得到支持
https://developer.mozilla.org/ ... erval
为了 setInterval, 该壳没有考虑到哪个; 我认为他们很少使用,但如果他们真的需要他们,请记住。
卫东
赞同来自:
你也可以通过
在 foo, 如果你想
在某种情况下
卫东
赞同来自:
内部,好像这是箭头的功能。
如果上述生产垃圾令你担忧,你可以缩小。
或者也许考虑使用
https://www.npmjs.com/package/autobind-decorator
根据您的代码。
詹大官人
赞同来自:
卫东
赞同来自:
小姐请别说爱
赞同来自:
快网
赞同来自:
https://www.npmjs.com/package/first-interval
/完整披露,这是我的/.
这里的许多示例不包括参数处理,默认情况下更改行为
在任何重大项目都是邪恶的。 来自文件:
这个模板
相同的S.
如果你是浏览器中的旧学校而不想要依赖关系,那很简单 cut-and-paste 的
https://github.com/jimm101/firstInterval
董宝中
赞同来自:
龙天
赞同来自:
具有零延迟的示例代码 REAL, 哪个工作 Chrome, Safari, Opera
有关更多信息,您可以找到
http://ajaxian.com/archives/settimeout-delay
在第一次手动呼叫之后,您可以使用功能创建间隔。
八刀丁二
赞同来自:
这将导致 myfunction, 然后会这样做 agaian 每个人 45 与执行不同的秒数
这不会称之为,但只计划它