javascript - 使用 Observables 进行同步 http 请求

标签 javascript angular rxjs rxjs5

我正在开发 Angular 2 项目。我必须发出 nhttp 请求。但我需要等待从上一个请求获取数据才能发出下一个请求。

如何使用 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/

相关文章:

javascript - Css3 过渡队列

ios - 该应用程序永远显示白屏。 Cordova ios@6.1.0

javascript - 如何创建单击按钮后打开的 Mailchimp 弹出注册表单

javascript - angular.js Controller 中的过滤和计数数组

提示内的 Javascript 日期选择器

javascript - 获取货币符号 Angular 2

Angular 6延迟循环

javascript - 我如何使用 RxJs 推迟对 AJAX 调用的任何请求,直到前一个请求解决

javascript - 处理 rxjs ajax.map 调用中的异常

angular - 从 this.router.events.subscribe() 中获取多个项目