我在Angular 6中具有以下两个功能:
http1() {
return this.http.post<any>('/url1').subscribe(() => console.log(1));
}
http2() {
return this.http.post<any>('/url2').subscribe(() => console.log(2));
}
现在,我想使用zip订阅这两个Observable,并在完成两者后执行一项操作:
Observable.zip([http1(), http2()]).subscribe(() => console.log(3));
在此示例中,控制台中未打印3
,仅打印了1
和2
。我需要打印其中三个,如何实现?
答案 0 :(得分:2)
您必须从这些Observable
请求中返回http
数据,而不是那里的subscribing
http1() {
return this.http.post<any>('/url1').pipe(tap(val => console.log(1)));
}
http2() {
return this.http.post<any>('/url2').pipe(tap(val => console.log(1)));
}
那些observables
不应包装在array
中,而应作为参数。
zip(http1(), http2()).subscribe(() => console.log(3));
答案 1 :(得分:0)
您将http1和http2包装到一个数组中。这不是zip的工作方式。您必须这样做:
currency = models.CharField(null=False, blank=True, default='£')
信息: 另请参阅:https://www.learnrxjs.io/operators/combination/zip.html