ps0*_*604 4 javascript angularjs
我有一个函数,它返回$ 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();
});
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
$http.success()并且error()是不是100%符合承诺的便利捷径.使用香草诺言then:
$http(config).then(function(response){return $q.reject}, function onError(reason){})
Run Code Online (Sandbox Code Playgroud)
试试这个: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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6284 次 |
| 最近记录: |