有没有办法让资源调用返回AngularJS的承诺?

时间:2013-04-15 11:43:16

标签: angularjs

我有以下代码,它返回一个promise,这是我需要的这个调用。现在我想打电话给$ 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;
        }
    );
 }

问:我想回复一个承诺。有没有办法可以让$资源返回一个像$ http那样的承诺呢?我正在寻找的是一个承诺,所以我可以执行以下调用代码:

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

1 个答案:

答案 0 :(得分:0)

只需使用$ q服务并修改如下代码并返回一个承诺

query: function (selectedSubject) {

         var deferred = $q.defer();
        Test.query({ subjectId: selectedSubject },
           function (resp) {
              deferred.resolve(resp);
            }
        );
    return deferred.promise;
     }