Rxjs - 映射源可观察和可修改它的可观察对象

时间:2018-02-26 20:02:31

标签: functional-programming rxjs

我想为users资源创建一个observable。我希望以一种方式创建它,当我以[{1}}或newUser获取事件时,我的updateUser数组会相应更新。

users

仅适用于第一个const usersList = new Observable(USERS_ARRAY) // Returns list of users const newUser = new Observable([NEW_USER, NEW_USER...]) // Returns value every time new user join const users = Observable.combineLatest(usersList, newUser) .map(data => [...data[0], data[1]]) 事件,因为输出值不会存储在任何位置。

如何使用rxjs正确完成?

2 个答案:

答案 0 :(得分:0)

您可以使用BehaviorSubject。 Subject实现了Observer和Observable接口,因此您可以监听它并将数据推送到它。

所以你可以尝试类似的东西

const usersList = new Observable(USERS_ARRAY) // Returns list of users
const newUser = new BehaviorSubject([NEW_USER, NEW_USER...]) // Returns value every time new user join

const users = Observable.combineLatest(usersList, newUser)
  .map(data => [...data[0], data[1]])

// when you want to add a new user
newUser.next(<your new NewUser Array>);

答案 1 :(得分:0)

您可以使用扫描来存储数据,同时不断更新数据。

let userArray=[user1,user2...]
newUser.scan((acc,curr)=>[...acc,curr],userArray)
.subscribe(console.log)