具有自动捕获功能的Bacon.js observable.map

时间:2013-11-03 11:29:38

标签: javascript exception-handling bacon.js

使用部分映射功能时(并非每个可能的输入都有效),我最终做了一个小帮手:

function strictMap(property, f) {
  return property.withHandler(function (ev) {
    try {
      var x = ev.fmap(f);
      // force
      if (x.hasValue()) {
        x.value();
      }
      return this.push(x);
    } catch (err) {
      return this.push(new Bacon.Error(err));
    }
  });
}

有了这个助手,我可以像strictMap(property, myMapper)一样使用property.map(myMapper)。这种功能已经在Bacon.js的某处,或者我是以错误的方式做某事吗?

与没有捕获任何内容的Observable.map比较?

1 个答案:

答案 0 :(得分:2)

答案是否定的 - 截至目前,Bacon.js中没有这样的功能。

我认为到目前为止还没有对异常捕获的需求,因为Javascript中的异常通常是软件错误,而不应该作为正常操作的一部分来处理。例如,JQuery中的AJAX错误未被建模为异常。

无论如何,我建议您在Github上打开一个新问题。让我们看看是否有其他人认为这是我们需要的东西。如果我们想这样做,我认为我们应该以更通用的方式实现异常处理,即不与“map”结合。

你实施,顺便说一句,看起来不错!