【问题标题】:How to construct data, from Observables value, and return a Observable<Response> after the HTTP call?如何从 Observables 值构造数据,并在 HTTP 调用后返回 Observable<Response>?
【发布时间】:2017-04-12 09:35:48
【问题描述】:

在构建包含从 Observable 解析的值的数据对象时,我无法弄清楚如何返回 Observable&lt;Response&gt;

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

那么,如何构造一个包含已解析的Observable 值的数据对象,然后返回Observable&lt;Response&gt; 对象?

// 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) );
}

【问题讨论】:

    标签: http angular typescript observable


    【解决方案1】:

    这应该做你想做的:

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

    【讨论】:

    • 我示例中的最后两行构成了瓶颈,知道data 对象依赖于“Observable 数据”,如何返回this.post( ... ) 又名Observable&lt;Response&gt;?您是否建议类似:this.http.post( url, fetchData() )
    • 对不起,我不明白你的评论。想法是等待第一个,然后等待第二个事件,然后构建对象。可能有更好的方法,例如zip(),其中两个请求都可以“并行”运行,但我不使用 TS,也不太了解 rxjs 运算符。
    猜你喜欢
    • 2017-05-17
    • 2019-09-18
    • 1970-01-01
    • 2017-11-01
    • 2017-04-07
    • 1970-01-01
    • 2023-03-23
    • 2019-01-26
    • 1970-01-01
    相关资源
    最近更新 更多