jQuery deferred.notify不起作用

时间:2016-09-21 20:33:18

标签: javascript jquery promise deferred

我想使用jQuery Promise Library / API。我写了一些代码来测试/学习它,但我没有得到预期的结果。

我将此代码粘贴到我的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');

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

2 个答案:

答案 0 :(得分:1)

对我来说,詹姆斯工作正常,也许这是你要求的决定,拒绝或通知。

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

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

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

答案 1 :(得分:1)

我使用npm来安装jquery,它安装了jQuery 3.1.0。我一定在阅读以前版本的jQuery的文档。看来他们肯定已经改变了jQuery3中的Promise API。

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

谢谢klikas。 :)