使用期望传递给它的查询字符串/参数的资源处理Angular.js中的promise的最佳方法是什么?我已经看到工厂,控制器和路由器处理了$ q的工作,但是当涉及参数时,我不知道如何处理它。
所以,如果这是工厂:
angular.module(Animals, ['$resource', '$route', '$location', function($resource, $route, $location) {
return $resource('http://thezoo.com/animals', { query: {method: 'GET', isArray: true}});
}]);
这是控制器:
Animals.query({size="med",gender='f'});
那么如何使用promises处理这个问题呢?对外部资源的调用可能需要很长时间。
答案 0 :(得分:3)
派对真的很晚,但我从谷歌那里找到了这个页面。 如果你想使用一个资源,但也许你想在继续之前从你的查询方法中获取数据(也许你是在解决这个问题或其他事情),你可以这样做。
var deferred = $q.defer();
Resource.query({params}, function (response) {
someData = response;
deferred.resolve(someData);
});
return deferred.promise;
答案 1 :(得分:1)
目前还不清楚你想要完成什么。
$resource
方法不会返回承诺。它们将返回空数组或在服务器返回数据时填充的对象。
如果你想要一个返回一个promise的方法,你可以编写一个直接使用$http
的方法。