即使.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)
不同之处在于:在第一个示例中,您有效地传递了两个参数:
600message(undefined在此处)因为()- 是JavaScript中调用函数的运算符。
但是,在第二个示例中,您传递600和函数 message。
正如@FakeRainBrigand 指出的那样——如果你想为函数提供参数——你有几种方法:
message = message.bind(<context>, param1, param2,...). 然后任何时候你调用message它都会被调用<context>asthis和param*as 参数。.show(600, function() {
message(param1, param2, ...);
});