【发布时间】:2014-04-17 20:53:55
【问题描述】:
我是 AngularJS 的新手,我想知道为什么 AngularJS 会继续进行下一个链接操作,即使我之前的一个链接函数失败了。
// Manipulate data
function manipulationData(data) {
return data.total + 2;
}
/*
* Begin chaining promises
*/
var deferred = $q.defer();
// JSON Request
$http.get('/json_test.json')
// If results is ok, then manipulate some data
.then(function(results) {
if(results.status == "ok") {
return manipulationData(results);
} else {
deferred.reject("Some data error");
}
}, function(reason) {
deferred.reject("Error request: " + reason);
})
// If manipulation is success
.then(function(results) {
if(results > 5) {
return $http.get('http://host.com/second');
} else {
deferred.reject("Error! Data is invalid");
}
}, function(reason) {
deferred.reject("Error request: " + reason);
})
.then(function(result){
return $http.get('http://host.com/second');
})
return deferred.promise;
由于某种原因,即使其中一个功能失败,应用程序也会继续执行所有功能。我希望在第一个承诺不起作用时停止操作。
例如,如果第二次操作失败,它应该抛出错误“一些数据错误”。
谢谢
【问题讨论】: