2016-09-10 98 views
0

我讀過Johnpapa AngularJS風格指南,它非常有趣。 但是,有件事我不明白,這是例外捕手工廠,能有人給我一個例子代碼.. https://github.com/johnpapa/generator-hottowel/blob/master/app/templates/src/client/app/blocks/exception/exception.js關於Johnpapa AngularJS異常捕捉器

這裏

function catcher(message) { return function(e) {...}; }

如何才能提供消息和承諾(e)參數? 對不起我的英文不好,我是法國人^^

+0

,我不知道到底導致你後是。你能用一個例子來闡述一下嗎? – Phix

回答

1

這只是一個抽象,所以你不必在你的應用程序的每一個點上拋出異常。如果你這樣做,並決定改變你的異常信息的打印方式,你將不得不改變你的應用程序中的許多地方。有了這家工廠,你可以在一個地方改變它。

catcher是封閉(read here what a closure is)。它基本上是一個函數,它返回一個可以用另一個值調用的函數。考慮一下,因爲你正在準備捕獲者的消息,然後插入應該報告的值。在他的數據服務,你看到他用捕手如下:

function getPeople() { 
    return $http.get('/api/people') 
    .then(success) 
    .catch(fail); 

    ... 

    function fail(e) { 
    return exception.catcher('XHR Failed for getPeople')(e); 
    } 

利用關閉,你可以這樣做,以及:

function getPeople() { 
    return $http.get('/api/people') 
    .then(success) 
    .catch(exception.catcher('XHR Failed for getPeople')); 
+0

令人驚歎!我沒有看到dataservice的例子,謝謝:)回答aceepted – Xyt