2016-03-08 68 views
1

我正在通过John Papa's angular style guide进行阅读,并在异常处理部分发现此代码。有人请向我解释reason来自哪里或它如何在代码中工作?这是一些JavaScript/Angular的东西,我只是不知道它是如何工作的。有人可以解释这个JavaScript/Angular代码的工作原理吗?

/* recommended */ 
angular 
    .module('blocks.exception') 
    .factory('exception', exception); 

exception.$inject = ['logger']; 

function exception(logger) { 
    var service = { 
     catcher: catcher 
    }; 
    return service; 

    function catcher(message) { 
     return function(reason) { 
      logger.error(message, reason); 
     }; 
    } 
} 

回答

1

catcher函数返回一个函数本身具有的说法reason。在您发布的代码中,函数未被调用,因此没有提供reason

假设某人注入例外别的地方,你可以这样调用它:

var catcher = exception.catcher('This is a message'); 
var loggerError = catcher('This is the reason'); 

或者在单行:

var loggerError = exception.catcher('This is a message')('This is the reason'); 
+0

什么是做了'函数这样的优势捕手(消息,理由)'? – Yatrix

+1

您可以预先配置记录器。想一想'var log = exception.catcher('Something went wrong')'以及作为$ http.get(...)中的错误的原因。then(successFn,function(error){log(error); };' – JanS

相关问题