首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Observable.of转向异步

Observable.of转向异步
EN

Stack Overflow用户
提问于 2016-11-10 22:08:04
回答 2查看 2K关注 0票数 5

我将模拟包装到可观察性中的http调用。我最初的想法是简单地使用类似于Promise.resolveObservable.of,但它似乎没有像我预期的那样工作:

代码语言:javascript
复制
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');
代码语言:javascript
复制
<script src="https://npmcdn.com/@reactivex/rxjs@5.0.0-beta.6/dist/global/Rx.umd.js"></script>

似乎Observable.of是同步运行的,而Rx.Observable.from(Promise.resolve('from1'))是异步运行的(这就是我想要的)。只要我想测试微调,同步调用对我来说就不是一个选项。

例如,当我延迟它或设置计时器时,有一种解决方案:

代码语言:javascript
复制
Rx.Observable.of('of1').delay(0).subscribe...

但这对我来说也不太好。

如何将Observable.of设置为异步运行?将它从Promise转换为Promise似乎有点过头了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-10 23:25:18

如果你想让一个可观察对象的行为不同,你可以给它一个调度器。一旦清除了调用堆栈,您就可以使用异步调度程序使可观察到的发射值。代码方面,这看起来像这样:

代码语言:javascript
复制
Rx.Observable.of(1, 2, 3, Rx.Scheduler.async).subscribe(
    (val) => console.log(val)
);

console.log('first');

这将注销:

代码语言:javascript
复制
//first
//1
//2
//3

jsbin示例如下:http://jsbin.com/cunatiweqe/6/edit?js,console

票数 5
EN

Stack Overflow用户

发布于 2019-10-10 14:39:45

最近的rxJS框架似乎更倾向于asyncScheduler (从rxjs导入)而不是async (import from "rxjs/internal/scheduler/async")。示例:

代码语言:javascript
复制
import { of asyncScheduler } from "rxjs";

const ret = of(this.someVariable, asyncScheduler);

有关rxJS调度器的更多信息,请访问here

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40529599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档