我在Angular中构建了一个警戒器,我需要发出两个不同的HTTP请求,并基于这两个请求确定是否继续。我注意到forkJoin
是这样做的正确方法,但我无法让我的火。无法获得forkJoin发射
在我的代码,我有:
this.userService.watchCurrentUser().subscribe(data => { console.log(data) });
this.orgService.watchOrg().subscribe(data => { console.log(data) });
Observable.forkJoin(
this.userService.watchCurrentUser(),
this.orgService.watchOrg()
).subscribe(data => {
console.log(data);
});
前两个订阅后来加入到测试,如果调用实际上开火,他们是;我看到他们的日志。但我从来没有看到很多从forkJoin
。
我导入我的文件的顶部:
import { Observable, BehaviorSubject } from 'rxjs/Rx';
import 'rxjs/add/observable/forkJoin';
是否有别的我失去了一些东西,以便使用forkJoin
?
他们都做火;我怀疑这可能是问题所在,这就是为什么我将订阅添加到顶端,并且我看到它们实际上都会发出2个值(我在其他地方也会调用它们)。我最终看到4个日志(顶部的2个),但没有一个来自forkJoin本身。这两个调用都只是HTTP请求的包装,所以除了我所知,禁止返回所需的时间都应该发出。 – RhoVisions
当我无法自己测试时,我不知道你的代码应该做什么,但是如果你确定它们都发出并且你知道你总是只想要一个项目,你可以用'take(1)'链接它们来完成收到第一个值后。 – martin
我面临的问题是我需要两个HTTP请求来完成,因为我需要从两个数据来确定如何继续。有更多数据可以帮助我们解决问题吗?正如我所提到的,它们实际上只是HTTP调用的包装器,内置了一些缓存。 – RhoVisions