完成其他两个功能后的功能。 Angular 5

时间:2018-05-24 06:21:32

标签: angular

我的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();
    });
}

1 个答案:

答案 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都发出值。 pipetake(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是一个更好的解决方案。