RxDart 为流中的每个项目获取项目并加入结果
RxDart fetch item for every item in stream and join results
我有一个代表任务的简单数据class:
class Task {
String name;
String userId;
}
还有一系列任务:
class TaskDataSource {
Stream<List<Task>> getAll() {
}
对于每个 task
,我还想获取分配给它的 user
:
class UsersDataSource {
Stream<User> getById(String userId);
}
最后将 task
与 user
组合起来创建一个包含用户数据和任务数据的对象。我正在玩 zip
函数以及 flatMap
但找不到可行的解决方案。任何帮助将不胜感激。
使用Rx.forkJoinList
:
class UserAndTasks {
final User user;
final Task task;
UserAndTasks(this.user, this.task);
}
void main() {
UsersDataSource usersDataSource;
TaskDataSource taskDataSource;
taskDataSource
.getAll()
.flatMap(
(tasks) => Rx.forkJoinList(tasks
.map((task) => usersDataSource
.getById(task.userId)
.map((user) => UserAndTasks(user, task)))
.toList()),
)
.listen((List<UserAndTasks> event) => print(event));
}
我有一个代表任务的简单数据class:
class Task {
String name;
String userId;
}
还有一系列任务:
class TaskDataSource {
Stream<List<Task>> getAll() {
}
对于每个 task
,我还想获取分配给它的 user
:
class UsersDataSource {
Stream<User> getById(String userId);
}
最后将 task
与 user
组合起来创建一个包含用户数据和任务数据的对象。我正在玩 zip
函数以及 flatMap
但找不到可行的解决方案。任何帮助将不胜感激。
使用Rx.forkJoinList
:
class UserAndTasks {
final User user;
final Task task;
UserAndTasks(this.user, this.task);
}
void main() {
UsersDataSource usersDataSource;
TaskDataSource taskDataSource;
taskDataSource
.getAll()
.flatMap(
(tasks) => Rx.forkJoinList(tasks
.map((task) => usersDataSource
.getById(task.userId)
.map((user) => UserAndTasks(user, task)))
.toList()),
)
.listen((List<UserAndTasks> event) => print(event));
}