即使.promise().done()
我的回调函数提前触发..
为什么?
title.delay(1000).show(1200).promise().done( function(){
menu.show(0, function(){
menu.find('*').show(600, message())
})
})
message = function(){ alert('done'); }
这段代码:
menu.find('*').show(600, message())
需要是:
menu.find('*').show(600, message)
不同之处在于:在第一个示例中,您有效地传递了两个参数:
600
message
(undefined
在此处)因为()
- 是JavaScript中调用函数的运算符。
但是,在第二个示例中,您传递600
和函数 message
。
正如@FakeRainBrigand 指出的那样——如果你想为函数提供参数——你有几种方法:
message = message.bind(<context>, param1, param2,...)
. 然后任何时候你调用message
它都会被调用<context>
asthis
和param*
as 参数。.show(600, function() {
message(param1, param2, ...);
});