关于Johnpapa AngularJS例外捕手

时间:2016-09-10 23:05:47

标签: javascript angularjs

我读过Johnpapa AngularJS样式指南,这真的很有趣。 但是,有一些我不明白的东西,它是捕手工厂的例外,有人可以给我一个示例代码.. https://github.com/johnpapa/generator-hottowel/blob/master/app/templates/src/client/app/blocks/exception/exception.js

下面

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

我们如何提供消息和承诺(e)参数? 抱歉我的英文不好,我是法国人^^

1 个答案:

答案 0 :(得分: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'));