実際のビジネスでは、次のステップを進める前に、いくつかのリクエストが完了するまで待つ必要があります。ただし、AngularJSの$ HTTPは同期リクエストをサポートしていません。
解決策1:
コードコピーは次のとおりです。
$ http.get( 'url1')。成功(function(d1){
$ http.get( 'url2')。成功(function(d2){
//ロジックの処理
});
});
解決策2:
その後のメソッドは順番に実行されます。
コードコピーは次のとおりです。
var app = angular.module( 'app'、[]);
App.Controller( 'PromiseControl'、function($ scope、$ q、$ http){
関数getjson(url){
var Deferred = $ q.defer();
$ http.get(url)
.success(function(d){
d = parseint(d);
console.log(d);
deferred.resolve(d);
});
deferred.promiseを返します。
}
getjson( 'json1.txt')。then(function(){
return getjson( 'json2.txt');
})then(function(){
return getjson( 'json1.txt');
})then(function(){
return getjson( 'json2.txt');
})。それから(function(d){
console.log( 'end');
});
});
解決策3:
$ q.allメソッドの最初のパラメーターは、配列(オブジェクト)にすることができます。最初のパラメーターのすべてのコンテンツが実行された後、その後のメソッドが実行されます。最初のパラメーターのメソッドのすべての戻り値は、配列(オブジェクト)として渡されます。
コードコピーは次のとおりです。
var app = angular.module( 'app'、[]);
App.Controller( 'PromiseControl'、function($ scope、$ q、$ http){
$ q.all({first:$ http.get( 'json1.txt')、2番目:$ http.get( 'json2.txt')})。
console.log(arr);
angular.foreach(arr、function(d){
console.log(d);
console.log(data);
})
});
});
$ qの詳細な使用に関する多くのチュートリアルがあります。私も連絡を取り合っています。あなたがうまく話せないなら、あなたはあえてナンセンスを話しません。上記のコードは私の理解に従って書かれており、テスト後に問題はありませんでした。