动画中的承诺

Promises in animations

我收到以下查询。考虑下一行代码:

case A: 
  $('#box').promise().done(function(){alert('Okay');});

在上述情况下,警报消息将立即显示,因为 $('#box').promise() 将 return 一个 已解决的承诺对象 并且完成回调将触发立即地。现在,如果我们将上面的代码更改为:

case B:   
  $('#box').hide(5000);
  $('#box').promise().done(function(){alert('Okay');});

完成回调将在 5 秒后触发。在那种情况下,如果 B 不同于 $('#box' ) 在案例 A 中并且知道 .hide() 方法已经应用于它以正确等待触发回调。一定有一些内在的jQuery程序...

希望通俗易懂

There must be some inner jQuery procedure...

是的,有。 animation queue is attached to the DOM element using .data(), and will be retrieved by the call to .promise() 默认等待动画队列。你的情况A,刚好是空的,所以promise马上就实现了。