Bacon.js observable.map with auto-catch

Bacon.js observable.map with auto-catch

本文关键字:with auto-catch map observable js Bacon      更新时间:2023-09-26

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

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));
    }
  });
}

有了这个帮助程序,我可以像property.map(myMapper)一样使用strictMap(property, myMapper)。这样的功能是否已经在培根.js某处,还是我以错误的方式做了什么?

与Observable.map相比,它什么都没抓到?

答案是否定的——培根中没有这样的功能.js到目前为止。

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

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

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