【发布时间】:2017-02-08 16:41:46
【问题描述】:
我仍在为 Observables 苦苦挣扎,因为我正在编写具有复杂逻辑和多个请求和响应的复杂 REST API 查询函数。
我已经写了很多这样的订阅函数,
function1(){
thisReturnsAnObservable()
.subscribe();
}
function2(){
thisReturnsAnObservable()
.subscribe();
}
function3(){
thisReturnsAnObservable()
.subscribe();
}
在有多个查询的函数中,我这样编码
complexFunction(){
function1();
function2();
function3();
if (aVariableChangedBy123 == true){
doSomething();
}
}
我想我很困惑,实验证明我错了,因为变量 aVariableChangedBy123 总是在 function1,2,3 完成之前被评估,所以我想要的是因为 aVariableChangedBy123 只有在 function1,2 之后才会确定, 3 依次完成,我应该如何编写一个函数来将这些函数与订阅链接,使它们顺序运行?
我知道可以重写所有函数1、2、3,但有没有办法不需要编写这些函数,因为我可以在其他情况下重用它们?
我尝试使用 flatMap() 函数,我知道它可以像 then() 一样链接它们,但是代码在运行时总是会出错,比如 Cannot read property 'flatMap' of undefined,因为所有函数 1、2、3 都是 void 函数.
我有办法,但不知道对不对。
喜欢
Observable.forkJoin(Observable.of(function1),Observable.of(function2)).subscribe() ;
这可行吗?从没想过我可以静态使用它...
【问题讨论】:
-
检查
flatMap(现在mergeMap带有rxjs5)和forkJoin -
他们似乎不适合我,有时他们只是给我 void[] is not assignable to type of SubscribableOrPromise
错误
标签: javascript angular asynchronous rxjs observable