smn*_*brv 4 javascript asynchronous observable rxjs5
我即将模拟一个包含在observable中的http调用.我最初的想法是简单地使用Observable.of类似的Promise.resolve,但它似乎没有像我预期的那样工作:
Rx.Observable.of('of1').subscribe(e => console.log(e));
console.log('of2');
Rx.Observable.from(Promise.resolve('from1')).subscribe(e => console.log(e));
console.log('from2');Run Code Online (Sandbox Code Playgroud)
<script src="https://npmcdn.com/@reactivex/rxjs@5.0.0-beta.6/dist/global/Rx.umd.js"></script>Run Code Online (Sandbox Code Playgroud)
它似乎在异步Observable.of运行时同步Rx.Observable.from(Promise.resolve('from1'))运行(这就是我想要的).只要我想测试微调器显示,同步调用对我来说不是一个选项.
当我延迟它或设置一个计时器时,有某种解决方案:
Rx.Observable.of('of1').delay(0).subscribe...
Run Code Online (Sandbox Code Playgroud)
但这对我来说也不好看.
如何转向Observable.of异步运行?将它从Promise转换似乎是一种矫枉过正.
如果您希望observable具有不同的行为,则可以将调度程序传递给它.一旦调用堆栈清除,您就可以使用异步调度程序来生成可观察的值.代码明智,这将是这样的:
Rx.Observable.of(1, 2, 3, Rx.Scheduler.async).subscribe(
(val) => console.log(val)
);
console.log('first');
Run Code Online (Sandbox Code Playgroud)
这将注销:
//first
//1
//2
//3
Run Code Online (Sandbox Code Playgroud)
在这里工作jsbin示例:http://jsbin.com/cunatiweqe/6/edit?js,console
| 归档时间: |
|
| 查看次数: |
785 次 |
| 最近记录: |