如何在Dart中使用StreamZip合并流 [英] How to merge stream using StreamZip in Dart

查看:202
本文介绍了如何在Dart中使用StreamZip合并流的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个流:

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆