加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angular2 – 您需要取消订阅Angular 2的http调用以防止内存泄漏

发布时间:2020-12-17 08:25:09 所属栏目:安全 来源:网络整理
导读:您是否需要取消订阅Angular 2的http呼叫来防止内存泄漏? fetchFilm(index) { var sub = this._http.get(`http://example.com`) .map(result = result.json()) .map(json = { dispatch(this.receiveFilm(json)); }) .subscribe(e=sub.unsubscribe()); ... 所
您是否需要取消订阅Angular 2的http呼叫来防止内存泄漏?
fetchFilm(index) {
        var sub = this._http.get(`http://example.com`)
            .map(result => result.json())
            .map(json => {
                dispatch(this.receiveFilm(json));
            })
            .subscribe(e=>sub.unsubscribe());
            ...
所以答案是否定的,你不会ng2将自己清理

来自Angular的Http XHR后端源的Http服务源:

注意在获得结果后如何运行“完整”。这意味着它实际上在完成时取消订阅。所以你不需要自己去做。

这是一个验证测试:

fetchFilms() {
    return (dispatch) => {
        dispatch(this.requestFilms());

        let observer = this._http.get(`${BASE_URL}`)
            .map(result => result.json())
            .map(json => {
                dispatch(this.receiveFilms(json.results));
                dispatch(this.receiveNumberOfFilms(json.count));
                console.log("2 isUnsubscribed",observer.isUnsubscribed);
                window.setTimeout(() => {
                  console.log("3 isUnsubscribed",observer.isUnsubscribed);
                },10);
            })
            .subscribe();
        console.log("1 isUnsubscribed",observer.isUnsubscribed);
    };
}

如预期的那样,您可以看到,在获得结果并使用可观察操作符完成后,它总是被自动取消订阅。这发生在一个超时(#3),所以我们可以检查可观察的状态,当它完成和完成。

和结果

没有泄漏,因为ng2自动取消订阅!谢谢红宝石帮助这个..

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读