【问题标题】:Is it possible to remove `Future` part from Stream<List<Future<String>>> to make it Stream<List<String>>?是否可以从 Stream<List<Future<String>>> 中删除“Future”部分以使其成为 Stream<List<String>>?
【发布时间】:2019-12-13 22:52:08
【问题描述】:

我想知道当转换器只返回Future 时,是否可以在 Dart 中将对象 A 的流转换为另一个对象 B。 (例如A -&gt; Future&lt;B&gt;

下面是一个例子……

Future<Car> getCar(String carId){
   ...
}

main(){
    Stream<List<String>> carIds = listCarIds(...);

    Stream<List<Car>> cars = ?? // <-- Is it possible to get this when `getCar` only returns future?
}

我只能制作Stream&lt;List&lt;Future&lt;Car&gt;&gt;&gt;,但不能制作Stream&lt;List&lt;Car&gt;&gt;

【问题讨论】:

标签: asynchronous dart future


【解决方案1】:

根据@user2864740 的建议,我能够使用以下链方法进行转换。

Stream<List<String>> idStream = ...

Stream<List<Car>> carStream = idStream
    .map((ids) => ids.map((id) => getCar(id)))
    .map((carFutureList) => Future.wait(carFutureList))
    .asyncMap((futureCarList) => futureCarList);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-15
    • 1970-01-01
    • 1970-01-01
    • 2019-11-20
    相关资源
    最近更新 更多