Javascript 如何在highland.js地图中使用错误

Javascript 如何在highland.js地图中使用错误,javascript,highland.js,Javascript,Highland.js,此函数 var _ = require('highland'); var accounts = ['ack', 'bar', 'foo']; _(accounts).map(function (x) { return new Error(x); }).errors(function (err, push) { push(null, 'fark'); }).each(function (x) { console.log(x); }); 日志 我希望它能记录下来 fark fark

此函数

var _ = require('highland');
var accounts = ['ack', 'bar', 'foo'];

_(accounts).map(function (x) {
  return new Error(x);
}).errors(function (err, push) {
  push(null, 'fark');
}).each(function (x) {
  console.log(x);
});
日志

我希望它能记录下来

fark
fark
fark
如何在highland.js中正确使用错误?

在中,您可以这样做:

getDocument.errors(function (err, push) {
    if (err.statusCode === 404) {
        // not found, return empty doc
        push(null, {});
    }
    else {
        // otherwise, re-throw the error
        push(err);
    }
});
因此,我认为您的错误仍然存在于以下行:

push(null, 'fark');
试一试

push(err);

希望这对你有帮助

阅读上链接的
映射
函数的源代码,您可以看到该函数的应用方式如下:

var fnVal, fnErr;
try {
   fnVal = f(x);
} catch (e) {
    fnErr = e;
}
push(fnErr, fnVal);
因此,如果要通过
map
transformer将值转换为highland StreamError,则需要抛出错误

以下代码:

var _ = require('highland');
var accounts = ['ack', 'bar', 'foo'];

_(accounts).map(function (x) {
  throw new Error(x);
}).errors(function (err, push) {
  push(null, 'fark');
}).each(function (x) {
  console.log(x);
});
会给你预期的结果

fark
fark
fark

我实际上是在尝试重新创建
if
语句,在那里它得到一个错误并推送一个不同的值,而不是传播错误本身。对于这个库中的错误通常是如何工作的,我仍然非常不确定。
fark
fark
fark