使用部分映射功能时(并非每个可能的输入都有效),我最终做了一个小帮手:
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比较?
答案 0 :(得分:2)
答案是否定的 - 截至目前,Bacon.js中没有这样的功能。
我认为到目前为止还没有对异常捕获的需求,因为Javascript中的异常通常是软件错误,而不应该作为正常操作的一部分来处理。例如,JQuery中的AJAX错误未被建模为异常。
无论如何,我建议您在Github上打开一个新问题。让我们看看是否有其他人认为这是我们需要的东西。如果我们想这样做,我认为我们应该以更通用的方式实现异常处理,即不与“map”结合。
你实施,顺便说一句,看起来不错!