gpt4 book ai didi

Angular 2 : Unsubscribe from http observable in Service

转载 作者:太空狗 更新时间:2023-10-29 16:49:25 33 4
gpt4 key购买 nike

在 Angular2 服务中取消订阅 http 订阅的最佳做法是什么?

目前我正在这样做,但我不确定这是否是最好的方法。

import { Injectable } from "@angular/core";
import { Http } from "@angular/http";

import { Subject } from "rxjs/Subject";
import { ISubscription } from "rxjs/Subscription";

@Injectable()
export class SearchService {
private _searchSource = new Subject<any>();

public search$ = this._searchSource.asObservable();

constructor(private _http: Http) {}

public search(value: string) {
let sub: ISubscription = this._http.get("/api/search?value=" + value)
.map(response => <any>response.json())
.do(data => this._searchSource.next(data))
.finally(() => sub.unsubscribe()).subscribe();
}

}

最佳答案

Angular 中的服务是一个单例。这意味着该服务将在您的应用程序的整个生命周期内存在。

您需要取消订阅可观察对象的原因是为了避免内存泄漏。什么时候发生内存泄漏?如果某些东西在它仍然订阅了一个可观察对象、事件监听器、套接字时就被垃圾收集了,...

因为 Angular 服务永远不会被销毁,除非你的整个应用程序都被销毁,所以没有真正的理由取消订阅它。只要您的应用程序运行,可观察对象就会完成或出错或继续运行。

结论:取消订阅服务是没有意义的,因为没有内存泄漏的可能性。

关于 Angular 2 : Unsubscribe from http observable in Service,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40861494/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com