是否可以从Stream <List <Future <String >>>中删除`Future`部分以使其成为Stream <List <String >>?

时间:2019-12-13 22:52:08

标签: asynchronous dart future

我想知道,当转换器仅返回Future时,是否有可能在Dart中将对象A的流转换为另一个对象B。 (例如A -> Future<B>

下面是一个示例...

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<List<Future<Car>>>,不能做Stream<List<Car>>

1 个答案:

答案 0 :(得分:0)

根据@ 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);