使用高地流进行延迟计算

时间:2015-10-03 21:42:27

标签: highland.js

我正在尝试使用高地流来传回两个对象:另一个数据流和一个元数据对象。我创建了流:

const outputStream = ...;
const hstream = _.([outputStream]);
client.connect( .. function() {
  // fill data stream & also compute metadata, then
  hstream.append(meta);
  hstream.append(_.nil);
});

后来我用这个来消费:

hstream.apply(function(dataStream, meta) {
  ...
});

问题是在hstream结束之前通过apply act调用的函数已经结束,并且没有看到" meta"宾语。我怎样才能重新配置这个,以便在hstream中同时包含两个对象之前不会调用apply?

1 个答案:

答案 0 :(得分:0)

以下作品:

const outputStream = ...;
const hstream = _.();

client.connect( .. function() {
  // fill data stream & also compute metadata, then:
  ...
  hstream.write(outputStream);
  hstream.write(meta);
  hstream.end();
});

总的来说,我发现高地流非常强大和灵活,但抽象不是很清楚。在目前的情况下,没有任何明确的 在界面中清楚地表明我写的第一个版本认为自己“已完成”,即使你可以同步调用append。也许更多的doc和/或显式选项......例如在当前案例中:

const hstream = _.([outputStream], {lazy: true})

(或类似的东西......)