0

我有两个提供流的数据源(a 和 b)。他们将独立添加新数据。现在我想创建一个流(z),它将这两个流合并为一个,组合元素。

因此,当“a”第一次发出时,“b”还没有值,什么都不会发生(无论我是否必须实现它或者它是否集成在库中......)。当“b”首先发射时也是如此。

当两个流至少发出一次时,我希望“z”将这两个流合并在一起。这适用于 StreamZip。

但是现在的问题是,如果“a”再次发出,但“b”没有发出,StreamZip 会一直等到“b”再次发出,直到它自己(z)再次发出。我猜这是设计使然,因为源代码显示了这种行为:

// taken from: stream_zip.dart, shortened for better readability
...

    void handleData(int index, T data) {
      dataCount++;
      // subscriptions has the length 2, as I have two input streams,
      // but dataCOunt is 1, as only one source stream emitted
      if (dataCount == subscriptions.length) {
        // handle the data
        // ...
      } else {
        // don't do anything
        subscriptions[index].pause();
      }
    }

有没有办法在不自己编写逻辑的情况下处理这个问题?我想使用 RxDart 是一种选择?还是我使用/解释错误?

4

0 回答 0