У меня есть список идентификаторов, я хочу получить объект из моего API для каждого из этих идентификаторов и вернуть их в виде потока.Это мой код:
Stream<User> getList(Iterable<String> ids) =>
Stream.fromIterable(ids).asyncMap(loadUser);
Это работает нормально, но я хочу, чтобы мои вызовы API (в loadUser()
) выполнялись параллельно.Прямо сейчас вызывается первая функция loadUser()
, а вторая запускается только после завершения первого.
Конечно, я могу написать что-то вроде этого:
Stream<User> getList(Iterable<String> ids) async* =>
yield* Stream.fromIterable(await Future.wait(ids.map(loadUser)));
, но кроме этогобудучи немного запутанным, он также не излучает каждого пользователя как можно скорее.
В общем: я хочу, чтобы все загруженные объекты излучали в правильном порядке , но загружались каккак можно скорее.
Есть ли простой способ написать это, кроме создания асинхронных замыканий, которые генерируют событие для меня?