ホームページ >ウェブフロントエンド >jsチュートリアル >複数の非同期リクエストを処理するための angularjs メソッドの概要_AngularJS

複数の非同期リクエストを処理するための angularjs メソッドの概要_AngularJS

WBOY
WBOYオリジナル
2016-05-16 16:22:001145ブラウズ

実際のビジネスでは、次のステップに進む前に、いくつかのリクエストが完了するまで待つ必要があることがよくあります。ただし、angularjs の $http は同期リクエストをサポートしていません。

解決策 1:

コードをコピーします コードは次のとおりです:

$http.get('url1').success(関数 (d1) {
$http.get('url2').success(function (d2) {
//処理ロジック
});
});

解決策 2:

then 内のメソッドが順番に実行されます。

コードをコピーします コードは次のとおりです:

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);
});
return deferred.promise;
}

getJson('json1.txt').then(function(){
return getJson('json2.txt');
}).then(function(){
return getJson('json1.txt');
}).then(function(){
return getJson('json2.txt');
}).then(関数(d){
console.log('end');
});
});

解決策 3:

$q.all メソッドの最初のパラメータには配列 (オブジェクト) を指定できます。最初のパラメータの内容が実行された後、then のメソッドが実行されます。最初のパラメーターのメソッドの戻り値はすべて、配列 (オブジェクト) の形式で渡されます。

コードをコピーします コードは次のとおりです:

var app = angular.module('app',[]);
app.controller('promiseControl',function($scope,$q,$http) {
$q.all({最初: $http.get('json1.txt'),2 番目: $http.get('json2.txt')}).then(function(arr){
console.log(arr);
angular.forEach(arr,function(d){
console.log(d);
console.log(d.data);
})
});
});

$q の詳細な使用法については、インターネット上に多数のチュートリアルがあります。私も初めてです。うまく話せなければ、ナンセンスなことをあえて話さないでしょう。上記のコードは私の理解に従って書かれており、問題なくテストされました。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。