Jquery 使用CoffeeScript过早执行代码
我有一个主要使用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
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中一样。如果你只是写移动你的脚
,那就不叫它;它只是对函数的引用。你想要的是: