Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法让资源调用返回AngularJS的承诺?_Angularjs - Fatal编程技术网

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

有没有办法让资源调用返回AngularJS的承诺?,angularjs,Angularjs,我有下面的代码,它返回了一个承诺,这就是我这次调用所需要的。现在我想打电话给$resource return一个承诺,但我无法让它做我需要的事情 get: function (applicationId) { return $http({ method: 'GET', url: '/api/TestAccounts/GetSelect', params: { applicationId: applicationId } }); } 我的资源编码如

我有下面的代码,它返回了一个承诺,这就是我这次调用所需要的。现在我想打电话给$resource return一个承诺,但我无法让它做我需要的事情

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:我想回报一个承诺。有没有办法让$resource像调用$http那样返回一个承诺?我想要的是一个承诺,这样我就可以执行以下调用代码:

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

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

query: function (selectedSubject) {

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