Javascript 结合火基观测值和角度2
我正在开发angular2-firebase应用程序,我想知道一些rxjs的最佳实践,我发现谷歌很难做到这一点 假设我有一个类“Project”,它具有“name”、“$key”等属性,然后还有“Note[]”和“Task[]”数组 “Note”和“Task”是它们自己的类 最初,我在firebase中构建了如下数据:Javascript 结合火基观测值和角度2,javascript,angular,typescript,firebase-realtime-database,rxjs,Javascript,Angular,Typescript,Firebase Realtime Database,Rxjs,我正在开发angular2-firebase应用程序,我想知道一些rxjs的最佳实践,我发现谷歌很难做到这一点 假设我有一个类“Project”,它具有“name”、“$key”等属性,然后还有“Note[]”和“Task[]”数组 “Note”和“Task”是它们自己的类 最初,我在firebase中构建了如下数据: 计划 名字 标签 其他元材料 任务 任务1 任务2等 注释 注1 注2等 我会得到一个数据流,并使用map来获取数据,使其看起来完全符合我的需要 但后来我意识到,
- 计划
- 名字
- 标签
- 其他元材料
- 任务
- 任务1
- 任务2等
- 注释
- 注1
- 注2等
- 计划
- 项目1
- 名字
- 标签
- 等
- 项目2
- 名字
- 标签
- 等
- 项目1
- 任务
- 项目1
- 任务1
- 名字
- 身体
- 任务2
- 名字
- 身体
- 任务1
- 项目2
- 任务1
- 名字
- 身体
- 任务2
- 名字
- 身体
- 任务1
- 项目1
- 注释
- 项目1
- 注1
- 名字
- 身体
- 注2
- 名字
- 身体
- 注1
- 项目1
我不完全理解你的结构,但如果你把“项目”、“笔记”和“任务”作为三个独立的流(我猜这意味着你有三个可观察的对象)。您可以使用或使用其中任何一个值中最先出现的值,或分别使用一个可观察值:
let obs1 = Observable.from([1, 2, 3]).map(v => Observable.of(v).delay(1000)).concatAll();
let obs2 = Observable.from(['a', 'b', 'c']).map(v => Observable.of(v).delay(1000)).concatAll();
obs1.concat(obs2)
.subscribe(v => console.log(v));
obs1.merge(obs2)
.subscribe(v => console.log(v));
见现场演示:
带有concat()
的第一个示例打印:
1
2
3
a
b
c
带有merge()
的第二个示例给出:
1
a
2
b
3
c
我想你应该理解其中的区别
不要介意
obs1
和obs2
的复杂运算符链g。只是延迟地发出每个值来模拟异步流。我不完全理解您的结构,但是如果您将“项目”、“注释”和“任务”作为三个单独的流(我猜这意味着您有三个可观察对象)。您可以使用或使用其中任何一个值中最先出现的值,或分别使用一个可观察值:
let obs1 = Observable.from([1, 2, 3]).map(v => Observable.of(v).delay(1000)).concatAll();
let obs2 = Observable.from(['a', 'b', 'c']).map(v => Observable.of(v).delay(1000)).concatAll();
obs1.concat(obs2)
.subscribe(v => console.log(v));
obs1.merge(obs2)
.subscribe(v => console.log(v));
见现场演示:
带有concat()
的第一个示例打印:
1
2
3
a
b
c
带有merge()
的第二个示例给出:
1
a
2
b
3
c
我想你应该理解其中的区别
不要介意obs1
和obs2
的复杂运算符链g。它只是以延迟发射每个值来模拟异步流