【问题标题】:RxDart fetch item for every item in stream and join resultsRxDart 为流中的每个项目获取项目并连接结果
【发布时间】:2020-08-19 07:22:33
【问题描述】:

我有一个代表任务的简单数据类:

class Task {
   String name;
   String userId;
}

还有一个任务流:

class TaskDataSource {
   Stream<List<Task>> getAll() {
}

对于每个task,我还想获取分配给它的user

class UsersDataSource {
   Stream<User> getById(String userId);
}

最后将taskuser 结合起来创建一个包含用户数据和任务数据的对象。我正在使用zipflatMap 功能,但找不到有效的解决方案。任何帮助将不胜感激。

【问题讨论】:

    标签: flutter dart rxdart


    【解决方案1】:

    使用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));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-12
      • 1970-01-01
      • 1970-01-01
      • 2014-08-30
      • 1970-01-01
      • 2014-08-10
      • 2021-04-01
      • 1970-01-01
      相关资源
      最近更新 更多