初学Angular2和Rxjs,对Rxjs的函数式编程的了解还不是很清晰。在写angular2 http的demo
时遇到了一些疑惑。
service.ts
Login(username: string, password: string): Observable<User> {
return this.http.request(environment.apiUrl + '/Login', {
method: RequestMethod.Post,
responseType: ResponseContentType.Json,
body: {
username: username,
password: password,
}
})
.map(response => response.json() as User)
}
login.component.ts
onLoginBtnClick() {
const subscription = this.loginService.Login('admin', 'admin')
.subscribe(user => {
this.router.navigate(['/home']);
}, error => {
console.log(error);
});
}
上面的代码实现了一个简单的登录请求。Login方法返回一个Observable对象,调用subscribe方式执行请求。在订阅类似按钮点击事件时,为了防止内存泄露,需要在页面销毁前取消订阅。 我不明白的是,这样实现的http请求的subscription需不需要在页面销毁前取消订阅,为什么?还有哪些这样的订阅需要取消或者不需要取消,希望有人能给我讲讲,给个链接也行。多谢!
这个不需要。
常用的场景可以看这篇文章:https://segmentfault.com/a/11...