即使使用.promise().done()
,我的回调函数也会提前触发..
为什么吗
title.delay(1000).show(1200).promise().done( function(){
menu.show(0, function(){
menu.find('*').show(600, message())
})
})
message = function(){ alert('done'); }
答案 0 :(得分:6)
此代码:
menu.find('*').show(600, message())
需要:
menu.find('*').show(600, message)
不同之处在于:在第一个示例中,您有效地传递了两个参数:
600
message
(此处为undefined
)因为()
- 是JavaScript中调用函数的运算符。
但是,在第二个示例中,您传递了600
和功能 message
。
正如@FakeRainBrig并注意到 - 如果你想为函数提供参数 - 你有几种方法:
message = message.bind(<context>, param1, param2,...)
。然后,只要您拨打message
,就会以<context>
作为this
和param*
作为参数调用。
.show(600, function() {
message(param1, param2, ...);
});