35

チェーン内で複数の Ajax 呼び出しを行いたいと考えています。しかし、次の呼び出しを行う前に、各呼び出しの後にデータをマッサージしたいと思います。最後に、すべての呼び出しが成功したら、他のコードを実行したいと思います。

私は Ajax 呼び出しに Angular $http サービスを使用しており、それに固執したいと考えています。

出来ますか?

4

2 に答える 2

9

受け入れられた答えは良いですが、それはキャッチを説明しておらず、最終的にケーキにアイシングを加える方法を説明していません. 約束に関するこの素晴らしい記事は、私をまっすぐにしました。その記事に基づいたサンプルコードを次に示します。

$scope.spinner.start();

$http.get('/whatever/123456')
  .then(function(response) {
     $scope.object1 = response.data;
     return $http.get('/something_else/?' + $scope.object1.property1);
  })
  .then(function(response) {
     $scope.object2 = response.data;
     if ($scope.object2.property88 == "a bad value")
        throw "Oh no! Something failed!";
     return $http.get('/a_third_thing/654321');
  })
  .then(function(response) {
     $scope.object3 = response.data;
  })
  .catch(function(error) {
     // this catches errors from the $http calls as well as from the explicit throw
     console.log("An error occured: " + error);
  })
  .finally(function() {
     $scope.spinner.stop();
  });
于 2016-05-12T01:30:54.937 に答える