###前提・実現したいこと
AJAXで値を取得する複数の関数があります。
これらを、JavaScript, jQueryにて、非同期に並列で実行し、かつ結果を順次処理したいです。
###該当のソースコード
次のソースコードでいいますと
func1()
func2()
は並列で実行しながら、
console.log(respose1);
console.log(respose2);
はそれぞれ取得完了次第、順次処理したいということです。
(つまり、func1()
の取得完了次第、console.log(respose1);
を処理したい。)
JS
1$(function() { 2 $.when( 3 func1(), 4 func2() 5 ).done(function(respose1,respose2) { 6 console.log(respose1); 7 console.log(respose2); 8 }).fail(function() { 9 console.log('エラーです'); 10 }); 11 12 function func1(){ 13 const def = $.Deferred(); 14 $.ajax({ 15 url : 'http://example.com/ajax', 16 type : 'POST', 17 data : {id:1} 18 }).done(function(response1) { 19 def.resolve(response1); 20 }); 21 return def.promise(); 22 } 23 24 function func2(){ 25 const def = $.Deferred(); 26 $.ajax({ 27 url : 'http://example.com/ajax', 28 type : 'POST', 29 data : {id:2} 30 }).done(function(response2) { 31 def.resolve(response2); 32 }); 33 return def.promise(); 34 } 35});
###試したこと
$.when.apply
を使ってみたのですがこれも順次というわけにはいきませんでした。
js
1const functions = [ func1(), func2() ]; 2$.when.apply(null, functions).then( 3 function ( ...responses ){ 4 responses.forEach( function(response, i) { 5 console.log(respose); 6 }); 7 } 8});
もし良い方法がありましたら宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/26 11:42
2020/11/26 11:53
2020/11/26 12:02 編集
2020/11/26 12:05
2020/11/26 14:50 編集