在没有嵌套在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)); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |