2016-12-19 10 views
0

メインサービスからデータを取得する必要がありますが、時には機能していないため、フォールバックが必要でした。 Q & Dソリューションのアイデアは、そこからデータをダウンロードし、失敗した場合はエラーをキャッチし、URLをローカルのものに変更することでした。このような。コンソールでJavaScriptで間違ったURLを取得するには?

let found = null; 
try { 
    $.ajax({ url: mainUrl }) 
    .done(function (a) { found = true; }); 
} catch (e) { 
    found = false; 
} 

、私はソースを見つけることができないという、ブラウザのすすり泣きを見ることができますが、テスト変数foundはまだnullです。私は何が欠けていますか?

ウェブサービスの存在を検出する方法はまだまだ良いですが、まだ簡単です。もしそうなら、私は提案に開放されています。しかし、主に、私は上のサンプルで何が問題なのか不思議です。

答えて

2

コールは非同期です。ブラウザは、残りのスクリプト(たとえば、foundの値をチェックします)に進む前に、ajaxが終了するのを待つことはありません。

また、try/catchは、foundをfalseに設定することはありません。なぜなら、ajaxがトリガーしているため、呼び出しに失敗したからです。 .done()の後に.fail()を使用して、失敗した要求をキャッチしてみてください。

これでも変数foundはfalseに設定されません。ここで私はこれに対処する方法よりもはるかに良い説明をしてください:https://stackoverflow.com/a/14220323/1843048

関連する問題