2016-03-08 91 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

相關問題