我刚刚浏览了carasoul.js的代码并遇到了以下代码行::
setTimeout(function () {
that.$element.trigger(slidEvent)
}, 0)
以上代码行正在做的非常简单,下面的代码行::
that.$element.trigger(slidEvent)
以0为间隔执行,现在我的问题是,这段代码的上下文是什么,如果所有作者想要的是立即运行一个函数/执行一行代码,他本可以不用settimeout,就像在这种情况下一样,
而不是::
setTimeout(function () {
that.$element.trigger(slidEvent)
}, 0)
作者可能刚刚编写了以下代码行::
that.$element.trigger(slidEvent)
那么为什么设定的时间,它的背景是什么?
下面是整个代码片段,因此更有意义::
$active
.one('bsTransitionEnd', function () {
$next.removeClass([type, direction].join(' ')).addClass('active')
$active.removeClass(['active', direction].join(' '))
that.sliding = false
setTimeout(function () {
that.$element.trigger(slidEvent)
}, 0)
})
整个代码也可以在git here.上找到(第156行)。
重复我的问题,为什么在使用setTimeout时它似乎无所事事?
答案 0 :(得分:1)
这样做是为了在下一个周期调用该函数。 当我需要等待DOM刷新或在此循环中调度其他事件时,我会使用它。
您正在setTimeout队列中添加您的函数,并在检查setTimeout队列时在下一个循环中执行您的方法,因为时间(0)已通过。