[英]Reject $http promise on success
我有一個函數,它返回$ http GET的承諾(承諾成功/錯誤由調用者處理)。 我需要的是,在某些條件下,即使$ http成功,也要返回一個錯誤(調用者將這個條件視為被拒絕的承諾)。
在這個插件中,我試圖返回$ q.reject()但這不起作用。
http://plnkr.co/edit/iC3Wb1PBUFrXgPbTJyU0?p=preview
這是JavaScript:
app.controller("ctrl", function($scope, $http) {
var getUrl = function() {
var config = {
method: 'GET',
url: 'some.txt'
};
var x = 1; // if x == 1 the http should fail
return $http(config).success(function(response, status, headers, config) {
console.log(response);
if (x == 1) return $q.reject('error');
}).error(function(data, status, headers, config) {});
};
var init = function() {
var promise = getUrl();
promise.then(function() {
alert('OK');
}, function() {
alert('error');
});
};
init();
});
有任何想法嗎?
$http.success()
和error()
是與promises不完全兼容的便捷快捷方式。 then
使用香草諾言:
$http(config).then(function(response){return $q.reject}, function onError(reason){})
試試這個: http : //plnkr.co/edit/hTNFjXXDfqQ7e7jvNMtg?p = preview
您返回自己的延期承諾,並隨意解決/拒絕
var defer = $q.defer();
$http(config)
.success(function (response, status, headers, config) {
console.log(response);
if (x == 1)
defer.reject('error');
else
defer.resolve(response);
})
.error(function (data, status, headers, config) {
});
return defer.promise;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.