http - 如何从 Observables 值构造数据,并在 HTTP 调用后返回 Observable<Response>?

标签 http angular typescript observable

当构造一个包含从 Observable 解析的值的数据对象时,我不知道如何返回 Observable<Response> .

我试过使用 forkJoin() , 先解析值,然后 subscribe给它,并返回 this.http.post()...称呼。但是,这使得无法订阅函数本身 fetchData().subscribe( ... ) .我显然遗漏了一些东西。

那么,我该如何构造一个数据对象,其中包含已解析的 Observable值,然后返回 Observable<Response>对象?

// Simplified example 

fetchData() { 

  // Construct the data
  var data = {
      v1 : this.getValueFromObservable1(),
      v2 : this.getValueFromObservable2()
  };

  // Make the call, return the Observable<Response> object
  return this.http
      .post( 'api/authorization', JSON.stringify(data) );
}

最佳答案

这应该做你想做的:

fetchData() {
    return this.getValueFromObservable1()
    .mergeMap(v1 => 
          this.getValueFromObservable2()
          .map(v2 => { v1: v1, v2: v2})
    );
}

关于http - 如何从 Observables 值构造数据,并在 HTTP 调用后返回 Observable<Response>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40848106/

相关文章:

angular - 如何解决这个依赖问题

java - 是否可以使用 com.sun.net.httpserver.HttpServer 实现 HTTP 代理?

angular - Angular 2中,通过ComponentFactory创建Component好像渲染不完全

angular - rxjs merge.complete() 会关闭对其所有输入流的订阅吗?

javascript - 如何获取多个选中的复选框值?

angular - 如何在 Angular 中订阅服务

http - 验证 FORM POST 的来源以确保它来自同一服务器/应用程序

http - 成功后如何调用函数

javascript - jquery或javascript classic在浏览器中添加http header 信息(永久值)

angular - Webpack 从模块导入的类不是构造函数