如何在Dart中使用StreamZip合并流 [英] How to merge stream using StreamZip in Dart
问题描述
我有两个流:
Stream<List<Order>> stream1 = pendingStream();
Stream<List<Order>> stream2 = preparingStream();
我正在尝试使用 package:async/async.dart
包中的 StreamZip
像这样合并流...
I'm trying to use StreamZip
from the package:async/async.dart
package to merge the streams like so...
Stream<List<Order>> getData() {
Stream<List<Order>> stream1 = pendingStream();
Stream<List<Order>> stream2 = preparingStream();
return StreamZip([stream1, stream2]);
}
但是它不会编译.说:
The element type 'Stream<List<Order>>' can't be assigned to the list type 'Stream<Order>'.
据我了解,StreamZip应该接受两个流?我有什么不对吗?
From what I understand StreamZip should accept the two streams? What am I dong wrong?
推荐答案
您正在创建一个 StreamZip< T>
,它将为每个事件发出一个 List< T>
您可以在文档中引用.
You are creating a StreamZip<T>
which will emit a List<T>
of each event of its merged streams as you can refer in the documentation.
每个合并的流都发出 List< Order>
类型,这意味着您将创建一个合并的流,该合并的流将发出 List的
List
.
Each of your merged streams emit a List<Order>
type, so that means that you will create a merged stream that will emit a List
of List
.
基本上,您只需要将返回类型从 Stream< List< Order>>
更改为 Stream< List< List< Order>>
.
Basically, you only need to change your return type from Stream<List<Order>>
to Stream<List<List<Order>>>
.
这篇关于如何在Dart中使用StreamZip合并流的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!