angglarjsでhttp要求を同期して実行する方法を解決します。

1296 ワード

以下の通りです

self.tableParams = new NgTableParams({}, {
  getData: function (params) {
    $http.post("rest/staff/page", $scope.req).success(function (data) {
      if (data != null && data != undefined) {
        $scope.staffs = data.data;
        params.total($scope.totalPage);
      }
    }).error(function (data) {
      $("#serverErrorModal").modal({show: true});
    });
 
    return $scope.staffs;
  }
});
上記の例では、get Data方法は、http要求によって返される値を得るが、anglarjsではhttpは永遠に非同期であり、つまりreturnの値は常に空になる。
ネット上の例は全部$qで、promiseで実現します。試しましたが、だめです。自分の問題です。
そしていきなり$http自体がpromiseの対象に戻ると思いましたが、そのまま使ったらどうですか?コードは以下の通りです

self.tableParams = new NgTableParams({'count': 10} , {
  getData: function (params) {
    var promise = $http.post("rest/staff/page", $scope.req);
    return promise.then(function (resut) {
      var response = resut.data;
      var total = response.otherData[0];
      params.total(total);
      return response.data;
    });
 
  }
});
そのままreturnで同期してデータを取得することができます。
以上のこの解決方法はangglarjsの中でhttp要求を同時に実行する方法です。小編集は皆さんに全部の内容を共有しています。参考にしてもらいたいです。どうぞよろしくお願いします。