jQueryでは、ajaxコールバック・メソッドを間違えた場合、適切なコンソール・エラー・メッセージとスタック・トレースが取得されます。Dojo - 約束を飲み込んだReferenceError例外
$.get("https://api.github.com/users/octocat/orgs", function() {
var a = FAIL;
});
しかし、道場/リクエスト/ XHRを使っ道場では、これらのダムのミスを完全に飲み込まれているようです。これを実行するときの私のコンソールの唯一のことは、 "then"と "always"です。
require(["dojo/request/xhr" ], function(xhr) {
var promise = xhr.get("https://api.github.com/users/octocat/orgs");
promise.then(function(data) {
console.log('then');
var a = FAIL;
console.log('goodbye');
}, function() {
console.log('error');
});
promise.otherwise(function() {
console.log('otherwise');
});
promise.always(function() {
console.log('always');
});
});
廃止予定のdojo.xhrGetを使用すると、問題はほんの少し改善されます。私は、コンソールエラーメッセージを取得し、私のエラーハンドラが呼び出されますが、それは唯一の「にReferenceErrorを{}」と言うと、私が所有する機能を指すことはありませんスタックトレースを私に提供しています。私たちが作るプログラムを書くとき
dojo.xhrGet({
url: "https://api.github.com/users/octocat/orgs",
load: function() {
console.log('dojo.xhrGet.load');
var a = FAIL;
console.log('goodbye dojo.xhrGet.load');
},
error: function() {
console.log('dojo.xhrGet.error');
},
handle: function() {
console.log('dojo.xhrGet.handle');
}
});
間違いを犯すと、クローム開発ツールのようなツールがあり、それらの間違いを指摘してくれてうれしいです。スタックトレースとエラーメッセージが表示されたときにエラーを検出するまでにかかる時間は、フィードバックが得られない場合よりもはるかに迅速です。私は道場にはフィードバックがありません。そのような人気のある図書館がこのように動作することは信じられません。私は間違って何をしていますか?
これは何が起こっているかの素晴らしい説明です。スタックトレースを与えるコードに少し変更があります:http://jsfiddle.net/5rHM6/残念ながら、スタックトレースは正しい行を指していません(これはconsole.error行を指しています)。したがって、エラーをキャッチする場合は、これが正解です。エラーを見つけたい場合は、私の答えを選ぶ傾向があります。しかし、もしあなたがエラーをキャッチすれば、計装は抑止され、あなたは両方の世界の最高を得ることができないようです。 –
あなたはそうです、それは、スタックトレースでサービスを投げる完全なエラーとは対照的に、メッセージを渡すサービス( "エラーがありました")です。私はQライブラリをチェックアウトすることを強く勧めます。これは私が知っている最高の非同期ライブラリであり、確かにこの問題に対処しています。 –