当我以后使用`tap`方法时,不会调用`map`。我从水龙头得到回报

时间:2019-07-16 10:17:03

标签: angular rxjs angular8 rxjs-pipeable-operators

我正在tap之前的map的响应中进行一些更正,但是在map实现之后却没有被称为tapmap根本无法安慰我。

在我们发送给map的任何人帮助我之前,在响应中进行更正的最佳方法是什么?

也请在这里告诉我tap的确切用法。 这是我的代码:

createTranslationId(translationId: ModelTranslationId) {
        console.log('translationId', translationId);
        return this.http.post<any>(environment.configUrl + `Configuration`, translationId)
            .pipe(
                tap(response => {
                    return Object.assign({}, response, {
                        Response: {
                            'Name': response.Response.Name,
                            'Description': response.Response.Description,
                            'TypeId': response.Response.TypeId,
                            'Type': response.Response.Type,
                            'Id': response.Response.Id,
                            'CreatedBy': response.Response.CreatedBy,
                            'CreatedDate': response.Response.CreatedDate,
                            'UpdatedBy': response.Response.UpdatedBy,
                            'UpdatedDate': response.Response.UpdatedDate
                        }
                    });
                }),
                map(response => {
                    console.log('response3', response);
                    return response;
                }),
                catchError(this.handleError)
            );
    }

提前谢谢。

2 个答案:

答案 0 :(得分:2)

由于水龙头在镜像的Observable上执行操作,因此您无法在源上进行修改,因为您需要与地图操作员一起使用

因此您可以按以下方式更改功能:

createTranslationId(translationId: ModelTranslationId) {
  return this.http.post<any>(environment.configUrl + `Configuration`, translationId)
    .pipe(map(response => {
        response = // Your object modifications
    }),
    // Other pipe operators                
   );
}

答案 1 :(得分:1)

Name: package_name # ... Files: scripts/__init__.py # ^^^^^^^^^^^^^^^^^ This is a package, you can import scripts now # ... more files ... package_name-0.1.dist-info/INSTALLER # This is just the metadata for the package_name, note the .dist-info extension # This is not a Python package. 是您想要的运算符,用于转换从网络到达的响应。参见map operator doc

map()只是根据响应执行某项操作。它不会修改现有的响应,因此没有意义在tap表达式内返回任何东西。参见tap operator doc