它来找我以下查询。考虑下一行代码:
case A:
$('#box').promise().done(function(){alert('Okay');});
在上述情况下,警报消息将立即显示,因为$('#box').promise()
将返回已解决的承诺对象,并且完成的回调将立即触发。现在,如果我们将上面的代码更改为:
case B:
$('#box').hide(5000);
$('#box').promise().done(function(){alert('Okay');});
完成回调将在5秒后触发。在这种情况下,我无法找到 jQuery识别的第二行中的$('#box'),如果B与$(' #box& #39;)在情况A中并且知道已经在其上应用.hide()方法以正确地等待触发回调。必须有一些内部jQuery程序...
希望可以理解。
答案 0 :(得分:2)
必须有一些内部jQuery程序......
是的,有。 animation queue使用.data()
附加到DOM元素,并将通过调用.promise()
来检索,默认等待动画队列。在你的案例A中,它恰好是空的,以便立即履行承诺。