如何处理内部可观察物?

时间:2020-05-30 13:59:06

标签: angular rxjs observable

在我的Angular应用中是一个数组recordlist。该数组包含其他对象数组。我现在想做的是在recordlist数组中的每个嵌套元素上处理http.post(通过函数)。

this.recordlist是一个Observable,可以正常工作,并在我的应用程序中显示为表格。

/**
 *
 */
save() {
    this.recordlist
        .pipe(
            mergeMap((response: any) => response.flat()),
            map((response: any) => {
                console.log('---', response);
                return this.skaterService.setSkaterSeasonBestTimes(response);
            })
        )
        .subscribe(
            response => {},
            error => {},
            () => {
                console.log('.....done');
            }
        );
    }

/**
 *
 */
setSkaterSeasonBestTimes(value: SkaterBesttime): Observable<any> {
    return this.restService.post('/skater/besttimes', value).pipe(
        map((response: any) => {
            console.log('+++', response);
            return new SkaterBesttime(response, true);
        })
    );
}

现在的问题是内部setSkaterSeasonBestTimes(...)未被处理。我希望有人能给我有用的提示和解决方案。

2 个答案:

答案 0 :(得分:2)

已更改保存方法:-

View

答案 1 :(得分:1)

您撤消了地图和mergeMap。

尝试一下:

/**
 *
 */
save() {
    this.recordlist
        .pipe(
            map((response: any) => response.flat()),
            mergeMap((response: any) => {
                console.log('---', response);
                return this.skaterService.setSkaterSeasonBestTimes(response);
            })
        )
        .subscribe(
            response => {},
            error => {},
            () => {
                console.log('.....done');
            }
        );
    }

/**
 *
 */
setSkaterSeasonBestTimes(value: SkaterBesttime): Observable<any> {
    return this.restService.post('/skater/besttimes', value).pipe(
        map((response: any) => {
            console.log('+++', response);
            return new SkaterBesttime(response, true);
        })
    );
}

mergeMap需要返回一个Observable