在 Angular 2 中将 .map 与 http 结合使用
Use of .map with http in Angular 2
我想知道在 Angular 2
中使用 http
调用任何 api 时我们真的需要 .map
吗?
请检查我下面的代码。它在 .map
甚至没有 .map
的情况下工作正常。如果 api returns 数据那么它将 return 成功,否则它将 return 错误。在执行某些操作后,我还将 return 来自此处的任何模型数据。那么,我需要 Observable
吗?使用它有什么好处吗?我在 component
端使用 .subscribe
来接收数据。这很好还是我需要任何改进?
returnData: ReturnData;
callyAPI(body: modelData) {
return this.http.post(URL, body)
.do(data => {
for (let i = 0; i < data.length; ++i) {
this.returnData.push(data[i]);
}
return this.returnData;
},
error => {});
});
}
您不需要使用 map
,但 do
在这里绝对是错误的运算符
do
应该为每个事件执行一些代码,但不会修改事件值,而 map
可以像您在示例中那样用不同的值更新或替换事件.
https://github.com/ReactiveX/rxjs/blob/master/src/operator/do.ts#L13-L14
- Perform a side effect for every emission on the source Observable, but return
- an Observable that is identical to the source.
我想知道在 Angular 2
中使用 http
调用任何 api 时我们真的需要 .map
吗?
请检查我下面的代码。它在 .map
甚至没有 .map
的情况下工作正常。如果 api returns 数据那么它将 return 成功,否则它将 return 错误。在执行某些操作后,我还将 return 来自此处的任何模型数据。那么,我需要 Observable
吗?使用它有什么好处吗?我在 component
端使用 .subscribe
来接收数据。这很好还是我需要任何改进?
returnData: ReturnData;
callyAPI(body: modelData) {
return this.http.post(URL, body)
.do(data => {
for (let i = 0; i < data.length; ++i) {
this.returnData.push(data[i]);
}
return this.returnData;
},
error => {});
});
}
您不需要使用 map
,但 do
在这里绝对是错误的运算符
do
应该为每个事件执行一些代码,但不会修改事件值,而 map
可以像您在示例中那样用不同的值更新或替换事件.
https://github.com/ReactiveX/rxjs/blob/master/src/operator/do.ts#L13-L14
- Perform a side effect for every emission on the source Observable, but return
- an Observable that is identical to the source.