jQuery deferred.notify 不工作

jQuery deferred.notify not working

我想使用 jQuery Promise Library/API。我为 test/learn 编写了一些代码,但没有得到预期的结果。

我将此代码粘贴到我的 javascript 控制台中:

    window.dfd = $.Deferred();

    $.when(window.dfd.promise()).then(
      function(status) {console.log('resolved, status: ', status);},
      function(status) {console.log('rejected, status: ', status);},
      function(status) {console.log('notified, status: ', status);}
    );

在这一点上,我希望

window.dfd.notify('hello');

触发第三次回调并记录到控制台 - 但它没有。

这些都给出了预期的结果:

window.dfd.resolve('hello');
window.dfd.reject('hello');

有谁知道为什么我没有收到预期的通知结果? - and/or 我可以做些什么来获得预期的结果?

它对我来说很好,James,也许这是你调用 resolve、reject 或 notify 的顺序。

一旦您解决或拒绝延期,您将无法再通知它。

如果您按原样尝试您的代码并执行如下操作:

window.dfd.notify('hello');
window.dfd.resolve('hello');

您应该会看到预期收入。

解决或拒绝后,您将不会再看到通知,因此:

window.dfd.notify('hello');
window.dfd.resolve('hello');
window.dfd.notify('hello'); //this won't log anything

我使用 npm 安装 jquery,它安装了 jQuery 3.1.0。我一定一直在阅读 jQuery 以前版本的文档。看来他们一定是在 jQuery3.

中更改了 Promise API

得知我的代码适用于 klikas 后,我发现了我的版本问题,安装了 jQuery 2.2.4,现在运行良好。

谢谢点击。 :)