2017-12-04 17 views
0

内部main.js:Loremの/ ipsum.html内部jqueryでネストされた非同期リクエストを作成する方法は?

$.when(
    $.get('foo/bar.html'), 
    $.get('lorem/ipsum.html') 
).done(function(data1, data2){ 
    someCode(); 
}); 

$.when(
    $.get('otherStuff.html'), 
    $.get('example.html') 
).done(function(data1, data2){ 
    moreCode(); 
}); 

がどのように私はmoreCode()someCode()実行を行うことができますか?

$.when($.ajax(url), $.ajax(otherUrl)) 
.then(myFunc, myFailure); 

function myFunc(){ 
    //get called on success. 
} 

function myFailure(){ 
    //get called, if either one has an error. 
} 
+1

を打つことはありません作ってみることができますが。(行われます) '...いいえ、表示されていないコードではありません –

答えて

0

それがなければならない、()https://api.jquery.com/jquery.when/複数繰延オブジェクトが jQuery.when()に渡された場合に

は、メソッドからプロミスを返します新しい「マスター」 すべての遅延の集約状態を追跡する遅延オブジェクト が渡されました。このメソッドは、すべてのDeferredsが解決するとすぐにそのマスターDeferredを として解決します。またはDeferredsの1つが拒​​否されるとすぐにMaster Deferredを として拒否します。マスターDeferredが の場合、マスターDeferredのdoneCallbacksが実行されます。 doneCallbacksに渡される引数 は、それぞれの遅延値の の解決された値を提供し、遅延値が にjQuery.when()に渡された順序と一致します。

$.when(
    $.get(url), 
    $.get(otherUrl) 
).then(function(data1){ 
    someCode(); 
}); 
0

次いで使用

+0

jQueryは' .then'メソッドと '.done'メソッドの違いを教えてくれますか? –

+0

https://stackoverflow.com/a/5436408/3797224これはほぼ同じです。 – com2ghz

+0

唯一の違いは、 '.then'は' onResolved'、 'onFailure'と' onProgress'のコールバックを受け取りますが、 '.done'は' onResolved'を取るだけです...したがって '.done(fn)'は同等です(質問のコードに関して) '(fn)'に変換する - そうすれば* OPコードに違いはないはず* –

0

私はあなたのコードの作業だけで罰金だと思います。

あなたは別の$ .whenは、()があるの$に.get(otherUrl)では `無効なURL https://XXjsonplaceholder.typicode.comsomeCode

var url1 = "https://jsonplaceholder.typicode.com/users/1"; 
 
var url2 = "https://jsonplaceholder.typicode.com/users/2"; 
 

 
/* 
 
$.get(url1).done(function (result1) { 
 
\t console.log(result1); 
 
}); 
 
*/ 
 

 
$.when(
 
    $.get(url1), 
 
    $.get(url2) 
 
).then(function(result1, result2) { 
 
    console.log("result1"); 
 
    console.log(result1[0]); 
 

 
    console.log("result2"); 
 
    console.log(result2[0]); 
 

 
    someCode(); 
 
}); 
 

 
function someCode() { 
 
    console.log("someCode here"); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

関連する問題