Kar*_*ine 5 sequential observable rxjs angular
我需要顺序运行两个可观察值并仅返回第一个可观察值的结果。第二个可观察对象需要第一个可观察对象在运行之前完成。
我找到了解决方法,但我不满意。你可以在这里测试它:plunker test
const first = Observable.of(10).delay(1000).do(res => console.log('first'));
const second = Observable.of(20).do(res => console.log('second'));
console.log('start');
const test = first.concatMap(ev => second.map(x=> ev)).subscribe(res =>
console.log(res));
Run Code Online (Sandbox Code Playgroud)
我认为(并且我希望!)存在更好的解决方案,但我找不到它。在此先感谢您的帮助。
我在脑子里翻译flatMap成then这样,所以我希望看到类似的东西......
const first = Observable.of(10).delay(1000).do(res => console.log('first'));
const second = Observable.of(20).do(res => console.log('second'));
const test = first.flatMap(rsp => { return second.mapTo(rsp); });
Run Code Online (Sandbox Code Playgroud)
它实际上与您发布的内容没有什么不同,但直观上对我来说更有意义,因为我不会开始考虑操作concat。
更新:
我想你也可以做...
const test = first.delayWhen(() => second.mapTo(0));
Run Code Online (Sandbox Code Playgroud)
...但我不确定这是否更具可读性。
| 归档时间: |
|
| 查看次数: |
2098 次 |
| 最近记录: |