1

次のコードがあり、この呼び出しに必要なプロミスを返します。$resource への呼び出しで約束を返したいのですが、必要なことを実行することができません。

get: function (applicationId) {
   return $http({
      method: 'GET',
      url: '/api/TestAccounts/GetSelect',
      params: { applicationId: applicationId }
   });
}

私のリソースは次のようにコーディングされています。

var Test = $resource('/api/Tests', {}, {
   saveData: { method: 'PUT' },
   deleteData: { method: "DELETE", params: { testId: 0 } }
});

以下を実行すると、データが resp 変数に正しく返されます。しかし、これは私が望むものではありません。

 query: function (selectedSubject) {
    Test.query({ subjectId: selectedSubject },
       function (resp) {
          var aa = resp;
        }
    );
 }

Q:約束を返したいです。$http の呼び出しのように、代わりに $resource が約束を返すようにする方法はありますか? 私が探しているのは約束なので、次の呼び出しコードを実行できます。

testService.query($scope.selectedSubject)
   .then(function (result) {
      var a = result.data;
   }, function (result) {
      alert("Error: No data returned");
});
4

1 に答える 1

0

$q サービスを使用し、以下のようにコードを変更して promise を返すだけです

query: function (selectedSubject) {

         var deferred = $q.defer();
        Test.query({ subjectId: selectedSubject },
           function (resp) {
              deferred.resolve(resp);
            }
        );
    return deferred.promise;
     }
于 2013-04-15T12:23:48.997 に答える