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