【发布时间】:2017-05-16 21:16:12
【问题描述】:
我想(同步地)调用一个函数,然后使用它的返回值作为初始发射(随后在结果 observable 上链接一些其他运算符)。
我想在订阅过程中调用这个函数,所以我不能只使用Observable.of(() => getSomeValue())。我见过bindCallback(以前是fromCallback),但我认为它不能用于这项任务(如果我错了,请纠正我)。我在 v4 文档中看到了 start 静态运算符,但显然它没有在 v5 中实现(并且没有迹象表明它正在开发中)。 RxJava 也有 fromCallable 操作符,可以做到这一点。
我唯一能想到的方法是这样的:
Observable.create((observer: Observer<void>) => {
let val = getSomeValue();
observer.next(val);
observer.complete();
})
我认为就是这样做的。但这对于一个可能应该像Observable.fromFunction(() => getSomeValue()) 这样的简单事情来说似乎太复杂了,如果我想像start 运算符那样异步运行它怎么办?如何在当前版本的 RxJS 中做到这一点?
【问题讨论】:
-
你想达到什么目的?链接函数调用?
-
@ChirdeepTomar 是的,我正在尝试将函数用作种子并在其结果上链接可观察运算符。
-
通过订阅查看平面地图。 stackoverflow.com/questions/35268482/…
-
@ChirdeepTomar 我认为你没有仔细阅读我的问题......我的目标函数(我试图启动可观察链)没有返回可观察值,它只是返回普通值(比如string),所以我显然不能在上面使用
flatmap(或任何其他 Observable 运算符)。
标签: javascript rx-java rxjs system.reactive rxjs5