加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在没有嵌套在TypeScript和Angular 4中的情况下,链接并合并具有结

发布时间:2020-12-17 10:24:33 所属栏目:安全 来源:网络整理
导读:我有3个可观察链,我需要链接,第一个用于另一个2.它们必须按顺序运行,每个必须等待前一个完成. 是否有可能在没有嵌套的情况下进行链接? public observable1(): ObservableResponse { let headers = new Headers(); headers.append("Content-Range","bytes */
我有3个可观察链,我需要链接,第一个用于另一个2.它们必须按顺序运行,每个必须等待前一个完成.
是否有可能在没有嵌套的情况下进行链接?
public observable1(): Observable<Response> {
    let headers = new Headers();
    headers.append("Content-Range","bytes */*");
    let requestOptions = new RequestOptions({headers: headers});
    return this.http.put(url,"",requestOptions);
}

public observable2(data1url): Observable<Response> {
    let headers = new Headers();
    headers.append("Content-Range","bytes */*");
    let requestOptions = new RequestOptions({headers: headers});
    return this.http.put(data1url,requestOptions);
}

public observable3(data1url): Observable<Response> {
    let headers = new Headers();
    headers.append("Content-Range",requestOptions);
}

这是我发现链接它们的唯一方法,但它们仍然是嵌套的,是否可以这样做而不是嵌套它们?

public doHttpProcess() {
    return this.observable1().concatMap(result1 => {
        return this.observable2(result1.json().data1)
            .concatMap(result2 => {
                return this.observable3(result1.json().data1);
            });
    });
}

非常感谢您的帮助

你几乎就在那里,你只需要删除第二个嵌套,你可以链接concatMap调用
public doHttpProcess() {
    return this.observable1()
      .concatMap(result1 => this.observable2(result1.json().data1).map(result2 => ({ result1,result2 }))
      .concatMap(({ result1,result2 }) => this.observable3(result1.json().data1));
}

如果您不需要result2来生成最后一个observable,则可以简化为

public doHttpProcess() {
    return this.observable1()
      .concatMap(result1 => this.observable2(result1.json().data1).mapTo(result1))
      .concatMap(result1 => this.observable3(result1.json().data1));
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读