2

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

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相比?

4

1 回答 1

2

答案是否定的——目前 Bacon.js 中还没有这样的功能。

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

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

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

于 2013-11-04T06:07:49.903 回答