0

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

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) {
  ...
});

问题是apply之前调用的函数hstream已经结束,看不到“元”对象。如何重新配置​​它,以便在 hstream 包含两个对象之前不调用 apply ?

4

1 回答 1

0

以下作品:

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

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

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

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

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

于 2015-10-04T01:44:02.677 回答