2016-09-21 31 views
1

私はjQuery Promise Library/APIを使いたいです。私はそれをテストしたり学ぶためのコードを書いていましたが、期待した結果が得られません。jQuery deferred.notify not working

私は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

どのjQueryバージョンを使用していますか? – Bergi

答えて

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 
+0

解決方法や拒否を行わずに「通知」だけを行うと、コンソールログが表示されません。間違ったバージョンのjQueryを使っているのだろうか? –

+0

私はjQuery 3.1.0を使用しています。それがあなたのために働いたときに使ったバージョンは何ですか? –

+0

私はjQuery 2.2.4に切り替えましたが、現在は期待通りに動作します。私の質問への答えをありがとう。 :) –

1

私はjqueryのをインストールするためにNPMを使用し、それはjQueryの3.1.0をインストールしました。以前のバージョンのjQueryのドキュメントを読んでいたに違いない。彼らはjQuery3のPromise APIを変更したに違いないようです。

私のコードがklikasのために働いたことを知った後、私はバージョンの問題を発見し、jQuery 2.2.4をインストールしました。

ありがとうございます。 :)

+0

通知はたぶん理由で非難されているので、何か他のものを使うことを検討することをお勧めします。 – Bergi