2016-10-12 6 views
0

問題:jQuery.ajaxをBluebird.jsのPromise.resolveに渡すと、要求が失敗したときに警告がスローされます。Bluebird.resolve(jQuery.ajax)エラーでない旨の警告メッセージ[objectオブジェクト]

これは正しい動作ですか?私が見つけられなかった何らかの理由で、Bluebirdはこの警告がページに直接含まれているときには表示されません。それは、Webpackにバンドルされているときに警告を発します。

これが正しい動作であれば、BluebirdでjQuery.ajaxを使用する正しい方法は何ですか? Bluebirdがページに直接含まれていると、なぜそれが起こらないのですか?

更新:ちょっと掘り出した後、私はBluebirdの2つの異なるビルドの違いに過ぎないことがわかりました。ビルドされていないビルドでは警告が出されますが、ビルドされていないビルドでは発生しません。これには理由がありますか?

更新2:警告の原因は、.finally約束に添付されていることです。これと同じように:あなたが唯一の違いは、使用ビルドバージョンで見ることができるように https://jsfiddle.net/gf0jk80s/2/

:これは警告が発生することはありません https://jsfiddle.net/gf0jk80s/1/

Promise 
    .resolve($.getJSON('/notfound')) 
    .finally(() => {}) 
    .catch(() => {}); 

これは警告の原因となります。誰かが自分のコードで何が間違っているかを教えてもらえるかどうか本当に感謝します。理想的には、Bluebirdの両方のビルドバージョンで警告を出さないようにしたいと思います。この例では、関数は空ですが、実際のコードでは実際には2つのハンドラで処理を行います。

+0

Bluebirdの最新バージョンで、そのBluebird警告が追加されました。したがって、Bluebirdの異なるバージョンを含む2つのシナリオか、そのうちの1つがその警告を無効にするかのいずれかです。 – jfriend00

+0

[Bluebirdリリースノート3.0.3](http://bluebirdjs.com/docs/changelog.html#3.0.3)は、「非エラーの約束を拒否するサードパーティのライブラリはもはや警告を出さない」と述べています。この修正を行うには、Bluebirdの新しいバージョンがありますか? – jfriend00

+0

私はオープニングコメントでそれを見るので、両方とも3.4.6です。含まれているものは/js/browser/bluebird.min.jsにあり、バンドルされると/js/browser/bluebird.jsにあるようです。 –

答えて

0

少し掘りした後、私はそれは単に異なるが、ブルーバードのビルド 2の違いであることがわかります。 unimifiedビルドは 警告を出力しますが、縮小ビルドでは発生しません。これには理由がありますか?

これは、開発者が初期テストを作成して実行するときに使用するライブラリの「デバッグ」バージョンであり、デバッガで簡単に実行できるためです。開発者に間違ったことが起きたときに警告を表示するように冗長に設計されています。

縮小版は、スペース用に最適化されたライブラリの「本番版」と似ていますが、一般的に、アプリケーションのプロダクション版でユーザーのコンソールに警告が表示されることはありません。

C/C++の世界では、これはDLLのデバッグバージョンとDLLの最適化バージョンに似ています。デバッグバージョンには、ASSERT()のようなものが含まれています。これは、開発者に何かがあったかどうかを知らせるためのものです。

+0

ありがとう、これは知っておくと良いです。しかし今、どのノードをNodeで必要とするときにどのように使い分けるのですか?またはWebpackでそれを構築しますか? package.jsonは完全ビルドを指します。私のコードは開発中ですが、私のコードで開発していないので、Bluebirdの使用は常にプロダクションと見なすべきです。 また、サードパーティのライブラリ警告を削除した場合、開発バージョンで警告を表示しないようにしてください。 –

+0

@AndréCoelho - 警告はBluebirdコードを開発するためのものではなく、あなたが間違った約束を使用しているときに助言するものです。彼らはあなたのコードを正しく開発するのに役立ちます。サードパーティのjQueryの約束がまだ警告を引き起こしている理由はわかりません。通常、ビルドシステムでは、 "デバッグ"ビルドと "プロダクション"ビルドを作成する手段があり、一方は正規バージョンと最小化バージョンを含んでいます。 – jfriend00

+0

もう一度、環境オプションを明確にしてくれてありがとう。そして、はい、サードパーティ製のlibs警告を引き起こして私は私のコードでそれについて何もすることはできませんが問題です。私はいつもそれの生産バージョンを構築する方法を理解しようとします。どうもありがとう。 –