理解setTimeout()

时间:2013-08-10 14:21:47

标签: javascript settimeout drupal-jcarousel

我正试图让jcarousel双方都工作

如果我使用以下内容,则会返回正确的警告

this.timer = window.setTimeout( (a === 0.5)? alert("c.next() a = " + a): 
                                (a === 0.6)? alert("c.prev() a = " + a): 
                              function(){},500 ) ;

但是,如果我用实际的呼叫替换警报,它就不会滚动。只是移动到下一个图像

this.timer = window.setTimeout( (a === 0.5)? c.next.bind(c):
                                (a === 0.6)? c.prev.bind(c): function(){},500 ) ;

没有bind()它不起作用

this.timer = window.setTimeout( (a === 0.5)? c.next(): 
                                (a === 0.6)? c.prev(): function(){},500 ) ;

有谁知道为什么会这样?如果我没有在Timeout中使用任何条件并使用两个调用之一,例如c.next()那么它会滚动但只能从右到左

任何指南都将不胜感激 桑德拉

1 个答案:

答案 0 :(得分:2)

让您自己更容易,并提前定义您的功能,以节省范围和关闭的麻烦

var next = function () {return c.next();},
    prev = function () {return c.prev();},
    noop = function () {};

this.timer = window.setTimeout(
    (a === 0.5 ? next : a === 0.6 ? prev : noop),
    500
);

现在

  1. 如果要调试功能,可以将其单独调试到 setTimeout
  2. 很清楚哪些功能被传递到 setTimeout
  3. 编辑还要注意我是如何调用函数的,因为它们是作为参数传递的;当使用 setTimeout 时,这是因为他们想要稍后调用的东西,而不是立即调用。