我想使用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');
有谁知道为什么我没有收到预期的通知结果? - 和/或我可以做些什么来获得预期的结果?
答案 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。 :)