2016-05-18 10 views
-1

私は2つのajax呼び出しを並列に行いたいと応答し、各呼び出しから2つの配列を取得します。私はそれらの2つの配列をマージし、HTMLで表示したいと思います。それを行う最善の方法は何ですか?通話が完了したか、いずれかの通話が途絶えていることをどのようにして知ることができますか?両方のAJAX呼び出しは次のコードは、マージを行います成功しJavascriptを使用した2つの並列ajax呼び出しのマージ応答

+0

"ベストウェイ";それが客観的に何を意味するのかを説明してくださいまた、いくつかのコードを示してください。 SOはコード作成サービスではありません。現在、この質問はかなり広いです。 –

+0

@MikeMcCaughan私は約束を使ってそれに答えました。しかし、約束はすべてのブラウザでサポートされていません。だから私たちは他の方法でそれをすることができます。 –

+0

質問を編集してみてください。それ以外の場合は、以下に示すように、推測の束を得るだろう。 –

答えて

0

終了した場合にのみ、コールバックはクビにすべきである:一方

var result1 = ['a', 'b']; 
var result2 = ['c', 'd']; 
var mergedResult = result1.concat(result2); 

EDIT

を、あなたはそれがあなたのドン、私たちに語りました配列のマージは必要ですが、同期されたajax呼び出しは必要ありません。あなたは古いブラウザをサポートする必要がある場合、私は図書館をお勧めしますhttp://caniuse.com/#search=promise

  • を参照して、約束を使用し、すべてブラウザをサポートする必要がない場合

    1. :私はそのためのいくつかのソリューションを参照してください。たぶんあなたは既にjQueryを使用しているか、より軽量なライブラリを見るためにLightweight implementation of promisesを見ることができます。
    2. オープンなajaxコールを数え、そのうちの1つが完了するとカウンタを減少させ、カウンタがゼロになった後でアクションを実行することで、「小さな」ソリューションを試すことができます。私はそれをお勧めしませんが、それは簡単な方法です。
  • +0

    並列実行する2つのajax呼び出しにレスポンスをマージする必要があります –

    +0

    これらのソリューションはどれですか? –

    +0

    いいえ!私の懸念は、ライブラリを使用せずにコアJSで上記の結果を達成することです。私は2つのXHRオブジェクトを並行して実行し、XHR応答ステータスが200の場合には1つの関数が実行されるはずです。これは私の正確なクエリです。 –

    0
    var p1 = new Promise(function(resolve, reject){ 
    //Ajax call 1 
    resolve(response1) 
    }) 
    var p2 = new Promise(function(resolve, reject){ 
    //Ajax call 2 
    resolve(response2) 
    }) 
    
    Promise.all([p1, p2]).then(function(values){ 
    //Here we will get values of p1, p2 
    }); 
    
    +0

    このコードスニペットは問題を解決するかもしれませんが、[説明を含む](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)本当にあなたの投稿の質を向上させるのに役立ちます。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。あなたのコードに説明的なコメントを詰め込まないようにしてください。これは、コードと説明の両方の可読性を低下させます! –

    関連する問題