我有一个简单的 angularjs 服务,它封装了微风,使其可用于我的应用程序。在此服务中,我希望有一个处理失败的单一机制。我试图在通话结束时将 .fail() 链接起来,如果微风通话失败(例如由于用户被注销),则会调用失败。唯一的问题是链中的第一个 .done() (通常位于调用服务的控制器中)也被调用。我只希望在微风成功时调用它。
如何防止第一个 done 也被调用?
以下是一个示例保存调用(使用 done 被错误调用)
dataStore.saveEntity(model)
.then(function() {
// This is being called on fail
});
以及服务包装微风的片段
angular.module('app')
.factory('dataStore' ,function() {
var _handleFail = function(error) {
if (error && error.status && error.status === 401) {
// Logged out error (for example
}
};
function saveEntity(entity) {
return manager.saveChanges(entity).fail(_handleFail);
}