我在Angluar2应用程序中遇到了一个问题。假设我需要进行两个单独的http调用。一个调用直接取决于另一个调用的结果。代码如下所示:
this.http.get('http://kalafior/group/'+id)
.map(res => res.json())
.subscribe(group => {
//url depends on previous call result
this.http.get('http://kalafior/group/'+group.id+'/posts')
.map(res => res.json())
.subscribe((res) => {
console.log(res);
});
});
有嵌套的订阅()调用,我想摆脱。
你能做的就是利用Rxjs中的. do()
函数。看一下这里
flatMap就是为这种场景创建的。
this.http.get('http://kalafior/group/'+id)
.map(res => res.json())
.flatMap(group => this.http.get('http://kalafior/group/'+group.id+'/posts') )
.map(res => res.json())
.subscribe((res) => {
console.log(res);
});
});
问题内容: 有什么方法可以使用AngularJS进行同步调用吗? AngularJS文档不是很明确,也不是为了找出一些基本内容而扩展。 在服务上: 问题答案: 不是现在。如果查看源代码(从2012年10月开始),您会发现对XHR open的调用实际上是硬编码为异步的(第三个参数为true): 您需要编写自己的执行同步调用的服务。通常,由于JavaScript执行的性质,您通常不需要执行此操作,最终
我想我根本不理解角2的rxjs可观测物的概念。 我创建了一个可观察属性,其他人可以订阅该属性并获取http调用结果的数据。 如果我想发出另一个http请求,可能需要修改一些参数以提取一些新数据,该怎么办?我是否要用这个新的可观察物替换可观察物?这是否破坏了我的订阅组件与前一个可观察组件的订阅?
假设我们有两个类A、B和各自类的同步方法methodA、methodB。如果我们从synchronizedmethodA调用synchronized methodB,那么当methodB仍在执行时,线程是否仍对ObjectA保持锁定?
Observable.of(1, 2, 3).subscribe( doSomething, reject, resolve); }); The forEach pattern is useful for a sequence of events you only expect to happen once. export class MyApp { private d
我正在为一家德国公司评估Dart,将各种Java程序移植到Dart,并对结果进行比较和分析。在浏览器中,飞镖轻松获胜。对于服务器来说,软件性能似乎是一个严重的问题(请看我的这个问题),但这基本上得到了缓解。 现在我正在移植一些“简单”的命令行工具,我没想到会有任何严重的问题,但至少有一个问题。一些工具确实会发出HTTP请求来收集一些数据,独立的Dart虚拟机只以异步方式支持它们。纵观所有我能找到的
问题内容: 我需要Python中的一种回调类型的功能,在该功能中,我多次向Web服务发送请求,并且每次都更改参数。我希望这些请求同时发生而不是顺序发生,因此我希望函数被异步调用。 看起来异步可能是我想使用的东西,但是我所看到的有关其工作原理的示例看起来都像是过分杀了,所以我想知道是否还有其他方法应该走下去。对模块/过程有什么建议吗?理想情况下,我想以过程方式使用它们而不是创建类,但是我可能无法解决