2017-11-12 9 views
0

私は現在、4つのget要求が同時に発生するプロジェクトに取り組んでいます。私は同時にフェード効果を使用していますが、これが非同期であるため、空のデータが断続的に発生します。 Prefer way of doing multiple dependent ajax synchronous callで説明したように、私は現在、約束のあるjQuery AJAX

$.get('ajax_call_1').then(function(value) { 
    return $.get('ajax_call_2'); 
}).then(function(result) { 
    // success with both here 
}, function(err) { 
    // error with one of them here 
}); 

をやっている方法を置き換えるために、この方法に探してきた。しかし、私の質問は

:どのように私は上記で個別に各要求からの戻りにアクセスすることができますか?

+0

それらにアクセスするためには何を?デバッグするか、コード内でさらに使用しますか?デバッグのために、各コールバックの簡単な 'console.log(result)'がそのトリックを行うべきです。さらにそれを使用したい場合は、コードが非同期であるため、既に結果が得られるという保証はありません。それで、あなたは '約束を使用する理由です – 3Dos

+0

それをさらにコード – oceansmoving

+0

でそれを試してみると、それは完璧に動作します、ありがとう! – oceansmoving

答えて

1

あなたはリクエストが同時に送信されたと言いました。あなたのコードを書いた方法で、それらは順番に送信されます。その代わり、Promise.allで、あなたがリクエスト約束の全てを待つことができますし、結果を配列を指定することがあります:

Promise.all([ 
    $.get('ajax_call_1'), 
    $.get('ajax_call_2'), 
    $.get('ajax_call_3'), 
    $.get('ajax_call_4') 
]).then(function(results) { 
    var first = results[0]; 
    var second = results[1]; 
    ... 
}).catch(function(err) { 
    // called if one of the requests fails 
}); 
+0

申し訳ありませんが、私の投稿は少し不明でした。現在設定されている方法では、非同期で実行されます。上のコードは、私がそれを置き換えるために探していたものです – oceansmoving

+0

さて、あなたは私を混乱させました。あなたは現在、あなたがあなたの質問に書いたやり方、あるいは私の答えに示唆したようにそれをやっていますか? –

+0

それを試して、それは完全に動作します、ありがとう! – oceansmoving