Jquery 使用CoffeeScript过早执行代码

Jquery 使用CoffeeScript过早执行代码,jquery,coffeescript,javascript,Jquery,Coffeescript,Javascript,我有一个主要使用jQuery和CoffeeScript的动画 不过我遇到了一个我不太明白的问题 class Cow move_head: (x, y)=> stander.animate({ left: 10, },{ complete: @move_feet(x, y) }); move_feet: (x, y)=> stander.animate({ left: 10, },{ complete: @mover_in_test

我有一个主要使用jQuery和CoffeeScript的动画

不过我遇到了一个我不太明白的问题

class Cow
  move_head: (x, y)=>
    stander.animate({
left: 10,
  },{
    complete: @move_feet(x, y)
  });

  move_feet: (x, y)=>
    stander.animate({
left: 10,
  },{
    complete: @mover_in_test
  });
问题在于
complete:@move\u feet(x,y)
。当没有参数时,
complete:@move\u-feet
代码工作正常,并且在
move\u-head
动画完成时调用
@move\u-feet
。但是,当
完成时:@move\u-feet(x,y)
@move\u-feet(x,y)
在调用
move\u-head(x,y)
时被调用

我看了看《咖啡脚本》是为了什么而编写的

complete:@move_-feet(x,y)
案例中,将
complete:this.move_-feet(x,y)
和 在
complete:@move\u-feet
案例中,选择
complete:this.move\u-feet


因此,我认为它正在调用
complete:this.move_feet(x,y)
,只要它解析代码。但是,如何让它将代码的执行延迟到适当的时间?

只需创建另一个匿名函数:

complete: => @move_feet(x, y)
complete: => @move_feet(x, y)
这里有一些样品。首先,类似于您的示例:

class Sample
  constructor: (@x, @y) ->

  do_later: =>
    later = => @do_alert(@x, @y)
    setTimeout(later, 2000)

  do_alert: (a, b) =>
    alert([a, b])

a = new Sample(33, 44)
a.do_later()
当然,你不需要上课:

later = -> alert("hello")
setTimeout(later, 1000)

请注意,如果您希望保留
(例如在类中),则需要使用
=>
,否则
->
就可以了。基本上,这里的
later
是一个匿名函数,调用该函数时将运行它的主体(
alert(“hello”)
setTimeout(稍后,1000)
将在1000ms内有效地执行
later()

只需执行另一个匿名函数:

complete: => @move_feet(x, y)
complete: => @move_feet(x, y)
这里有一些样品。首先,类似于您的示例:

class Sample
  constructor: (@x, @y) ->

  do_later: =>
    later = => @do_alert(@x, @y)
    setTimeout(later, 2000)

  do_alert: (a, b) =>
    alert([a, b])

a = new Sample(33, 44)
a.do_later()
当然,你不需要上课:

later = -> alert("hello")
setTimeout(later, 1000)

请注意,如果您希望保留
(例如在类中),则需要使用
=>
,否则
->
就可以了。基本上,这里的
later
是一个匿名函数,调用该函数时将运行它的主体(
alert(“hello”)
setTimeout(稍后,1000)
将在1000ms内有效地执行
later()

当您编写
move\u-feet(x,y)
时,是的,这是调用函数
move\u-feet
——就像在普通JavaScript中一样。如果你只是写
移动你的脚
,那就不叫它;它只是对函数的引用。你想要的是:


当您编写
move_-feet(x,y)
时,是的,这就是调用函数
move_-feet
——就像在普通JavaScript中一样。如果你只是写
移动你的脚
,那就不叫它;它只是对函数的引用。你想要的是: