如何使用异步功能消耗高地流?

时间:2016-03-02 22:32:25

标签: asynchronous callback highland.js

使用异步功能消耗高地流的正确模式是什么?似乎.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.');
    });

谢谢。

2 个答案:

答案 0 :(得分:1)

据我所知,您只能使用具有Highland map函数的异步函数(在函数wrapCallback之后)。地图实际上并未调用该函数,因此您需要进行高地seriesparallel调用才能跟踪并实际处理这些调用。

答案 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.');
    });