使用异步功能消耗高地流的正确模式是什么?似乎.each方法不适用于使用wrapCallback包装的节点式异步函数。
我想做类似以下的事情。请注意,我想捕获.each函数中生成的错误,并在完成所有异步消耗时触发.done函数。
function asyncConsume(item,cb) {
// perform async operation based on data stream here
return cb(null,item);
}
var wrappedFunction = _.wrapCallback(asyncConsume);
highlandStream.each(wrappedFunction).done('All successfully done!')
.stopOnError(function(err) {
console.log('This error handler catches errors in .each() as well.');
});
谢谢。
答案 0 :(得分:1)
据我所知,您只能使用具有Highland map
函数的异步函数(在函数wrapCallback
之后)。地图实际上并未调用该函数,因此您需要进行高地series
或parallel
调用才能跟踪并实际处理这些调用。
答案 1 :(得分:0)
我认为你想要flatMap
,因为你正在将你的项目转换为新的流:
highlandStream
.flatMap(function(item) {
return wrappedFunction(item);
}).each(someFn).done('All successfully done!')
.stopOnError(function(err) {
console.log('This error handler catches errors in .each() as well.');
});