$ .Deferred reject被忽略,并且在特定情况下不会触发任何回调

时间:2015-07-01 20:39:52

标签: javascript jquery promise

我正在尝试淡出淡出,以阻止淡出的位置,并从淡入淡出的不透明度开始消失。目前,我第一次键入一个键,如果我用另一个键击中断fadeOut,它将导致animOpacityPromise永远不会解决,直到页面刷新为止。如果我让fadeOut完成,则任何后续animOpacityPromiseCtrl.reject();将被忽略,直到页面刷新,允许fadeOut完成。例如,在JSFiddle中,如果我键入一个键,请等到我在日志中看到clearOverlay animate promise completed,然后键入“ABC”,等待它开始淡出并中断它的淡出“SS”,叠加层将立即消失在第一个S上,并在第二个S上重新出现内容“SS”。预期的行为是它不清除searchString并覆盖,直到覆盖完成淡出然后中断淡入淡出并将键附加到搜索字符串和叠加层。如果我用击键中断第一个淡出,动画行为是我想要的淡入淡出,它会停止淡出的位置,并从不透明度开始逐渐消失淡出淡出但是animOpacityPromise.done和{在页面刷新之前,永远不会在任何击键中调用{1}}。

JSFiddle

animOpacityPromise.always

1 个答案:

答案 0 :(得分:0)

该错误是它不断重复使用相同的承诺对象。因此,每次调用animOpacityPromiseCtrl时,我都会将clearOverlay分配给新的延迟对象,并解决了问题。

Updated JSFiddle