我有一个请求功能:
function search(request) {
return $http.post('/path/to/resource', request);
}
我可以这样称呼它:
search({/*...*/})
.success(function() {})
.error(function() {})
因为我经常需要通过ID查找某些对象,所以我需要一个快捷功能。我找不到如何创建此函数的方法,因此也可以将其与
success()
和error()
函数链接。我搜索了如何在angular中创建promise,并找到了documentation about $q,这就是我尝试的方法:
function searchById(id) {
var deferred = $q.defer();
search({id: id}).
then(function (response) {
deferred.resolve(response.data.results[0]);
}, function (error) {
deferred.reject(error);
});
return deferred.promise;
}
我只能这样称呼它:
searchById().then(successCallback, errorCallback);
我希望能够这样称呼它:
searchById()
.success(successCallback)
.error(errorCallback);
关于
$q
的文档指示它返回promise
,而关于$http
的文档指示它返回httpPromise
,但是我无法弄清楚如何创建httpPromise
。任何想法?
最佳答案
用角度承诺错误回调应该捕获而不是错误,尝试这个
searchById()
.then(successCallback)
.catch(errorCallback);
sjokkogutten是正确的,在这种情况下您不需要使用$ q可以简化此操作
var deferred = $q.defer();
search({id: id}).
then(function (response) {
deferred.resolve(response.data.results[0]);
}, function (error) {
deferred.reject(error);
});
return deferred.promise;
对此
return search({id: id}).
then(function (response) {
return response.data.results[0];
}
关于javascript - Angular httpPromise,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36986464/