我的Angular 5控制器中有这两个功能。
当两者都没有错误地完成时,我需要做另一个功能,但只有当它们完成并且它们没有错误时才会这两个。
有人可以帮我合并吗?
CONTROLLER
empleadosAltas() {
this.empleadoService.empleadosAltas({
anno: this.annoFilter
}).subscribe(
(result) => {
//result
}
(error) => {
//error
});
empleadosBajas() {
this.empleadoService.empleadosBajas({
anno: this.annoFilter
}).subscribe(
(result) => {
//result
}
(error) => {
//error
});
服务
empleadosAltas(req?: any): Observable<Map<number, Array<Empleado>>> {
const options = createRequestOption(req);
options.params.set('anno', req.anno);
return this.http.get(this.resourceUrl + '/altas-empleado', options).map((res: Response) => {
return res.json();
});
}
empleadosBajas(req?: any): Observable<Map<number, Array<Empleado>>> {
const options = createRequestOption(req);
options.params.set('anno', req.anno);
return this.http.get(this.resourceUrl + '/altas-empleado', options).map((res: Response) => {
return res.json();
});
}
答案 0 :(得分:0)
使用zip
运算符(https://www.learnrxjs.io/operators/combination/zip.html)
zip(
this.empleadoService.empleadosAltas({
anno: this.annoFilter
}),
this.empleadoService.empleadosBajas({
anno: this.annoFilter
})
)
.pipe(
take(1),
)
.subscribe([atlas, bajas] => {
// your code here
});
Zip等待两个observable都发出值。 pipe
与take(1)
import { AfterViewInit, Component, ElementRef} from '@angular/core';
constructor(private elementRef:ElementRef) {}
ngAfterViewInit() {
this.elementRef.nativeElement.querySelector('my-element')
.addEventListener('click', this.onClick.bind(this));
}
onClick(event) {
console.log(event);
}
确保它仅适用于第一次发射,因此您不必取消订阅。
编辑: 在看到你的qustion评论后,我同意forkJoin是一个更好的解决方案。