我正在开发 Angular 2 项目。我必须发出 n
个 http 请求
。但我需要等待从上一个请求获取数据才能发出下一个请求。
如何使用 Observables
实现这一目标。
我正在做:
_.forEach(data, (path) => {
this.userService.getTreeNodes(path.id)
.subscribe(
data => {
//do something
}
);
});
现在,三个同时请求正在进行。
最佳答案
flatMap - 运算符是关键字,它将帮助您解决问题。
flatMap 是我们处理可观察对象之间依赖关系的方式。我的示例是人为的,但我从第一个可观察量返回一个值,第二个可观察量需要该值来计算总和。
就像我说的,这个例子是人为的,但如果我们将其与 Promise 进行比较,FlatMap 就是我们创建 Promise 链的等价物的方式。代码如下。
let first = Observable.of(10);
first.flatMap((operand1) => {
return Observable.of(operand1 + 10);
})
.subscribe(res => this.flatMappedStreams = {msg: '10 + 10 = ' + res});
来源http://www.syntaxsuccess.com/viewarticle/combining-multiple-rxjs-streams-in-angular-2.0
关于javascript - 使用 Observables 进行同步 http 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40958210/