相关疑难解决方法(0)

Promises和Observables有什么区别?

有人可以解释Angular Promise和之间的区别Observable吗?

每个例子都有助于理解这两种情况.在什么情况下我们可以使用每个案例?

promise rxjs angular-promise angular angular-observable

1291
推荐指数
26
解决办法
42万
查看次数

在RxJs 5中分享Angular Http网络调用结果的正确方法是什么?

通过使用Http,我们调用一个执行网络调用并返回http observable的方法:

getCustomer() {
    return this.http.get('/someUrl').map(res => res.json());
}
Run Code Online (Sandbox Code Playgroud)

如果我们采用这个可观察的并添加多个订阅者:

let network$ = getCustomer();

let subscriber1 = network$.subscribe(...);
let subscriber2 = network$.subscribe(...);
Run Code Online (Sandbox Code Playgroud)

我们想要做的是确保这不会导致多个网络请求.

这可能看起来像是一个不寻常的场景,但实际上很常见:例如,如果调用者订阅了observable以显示错误消息,并使用异步管道将其传递给模板,那么我们已经有两个订阅者.

在RxJs 5中这样做的正确方法是什么?

也就是说,这似乎工作正常:

getCustomer() {
    return this.http.get('/someUrl').map(res => res.json()).share();
}
Run Code Online (Sandbox Code Playgroud)

但这是在RxJs 5中这样做的惯用方式,还是我们应该做其他事情呢?

注意:根据Angular 5 new HttpClient,.map(res => res.json())所有示例中的部分现在都没用,因为现在默认采用JSON结果.

rxjs angular2-services rxjs5 angular

281
推荐指数
11
解决办法
8万
查看次数

是否有必要取消订阅由Http方法创建的可观察对象?

您是否需要取消订阅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());
            ...
Run Code Online (Sandbox Code Playgroud)

memory-leaks rxjs angular2-http angular

181
推荐指数
8
解决办法
5万
查看次数

如何在Angular2中取消订阅

如何在Angular2中取消订阅?RxJS似乎有一个dispose方法,但我无法弄清楚如何访问它.所以我有代码可以访问EventEmitter并订阅它,如下所示:

var mySubscription = someEventEmitter.subscribe(
    (val) => {
        console.log('Received:', val);
    },
    (err) => {
        console.log('Received error:', err);
    },
    () => {
        console.log('Completed');
    }
);
Run Code Online (Sandbox Code Playgroud)

mySubscription该如何取消订阅?

javascript rxjs angular

77
推荐指数
3
解决办法
7万
查看次数

服务中的Angular 4+ ngOnDestroy() - 破坏可观察的

在角度应用程序中,我们有ngOnDestroy()一个组件/指令的生命周期钩子,我们使用这个钩子取消订阅observables.

我想清除/ @injectable()服务中创建的destory observable .我看到一些帖子说ngOnDestroy()可以在服务中使用.

但是,这是一个很好的做法,只有这样才能这样做,什么时候会被召唤?有人请澄清一下.

observable rxjs angular-services angular

70
推荐指数
4
解决办法
5万
查看次数

尝试使用已销毁的视图:detectChanges

我正在使用Angular Meteor 2创建一个简单的UI.

1)我有一个顶部导航栏组件,其中有一个"注销"按钮.
2)点击"退出"按钮后,它会重定向到"登录".
3)然后我在控制台中看到此错误:EXCEPTION: Attempt to use a destroyed view: detectChanges

例外:

EXCEPTION: Attempt to use a destroyed view: detectChanges
browser_adapter.js:77 EXCEPTION: Attempt to use a destroyed view: detectChangesBrowserDomAdapter.logError @ browser_adapter.js:77BrowserDomAdapter.logGroup @ browser_adapter.js:87ExceptionHandler.call @ exception_handler.js:57(anonymous function) @ application_ref.js:265schedulerFn @ async.js:123SafeSubscriber.__tryOrUnsub @ Subscriber.js:225SafeSubscriber.next @ Subscriber.js:174Subscriber._next @ Subscriber.js:124Subscriber.next @ Subscriber.js:88Subject._finalNext @ Subject.js:128Subject._next @ Subject.js:120Subject.next @ Subject.js:77EventEmitter.emit @ async.js:112onError @ ng_zone.js:120onHandleError @ ng_zone_impl.js:66ZoneDelegate.handleError @ angular2-polyfills.js:394Zone.runTask @ angular2-polyfills.js:323ZoneTask.invoke @ angular2-polyfills.js:490
browser_adapter.js:77 STACKTRACE:BrowserDomAdapter.logError @ browser_adapter.js:77ExceptionHandler.call @ exception_handler.js:59(anonymous function) @ application_ref.js:265schedulerFn @ async.js:123SafeSubscriber.__tryOrUnsub …
Run Code Online (Sandbox Code Playgroud)

angular2-meteor angular

63
推荐指数
6
解决办法
5万
查看次数

Angular2:取消订阅服务中的http observable

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

目前我这样做,但我不确定这是否是最好的方式.

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();
    }

}
Run Code Online (Sandbox Code Playgroud)

unsubscribe rxjs5 angular

32
推荐指数
3
解决办法
1万
查看次数

如何取消/取消订阅所有挂起的HTTP请求的角度4+

如何取消/中止所有挂起的HTTP请求的角度4+.

有一种unsubscribe方法可以取消HTTP请求,但是如何一次取消所有待处理的请求.

特别是路线变化时.

我做了一件事

ngOnDestroy() {
  this.subscription.unsubscribe();
}
Run Code Online (Sandbox Code Playgroud)

但如何在全球实现这一目标

有任何想法吗?

rxjs typescript angular-http-interceptors angular

30
推荐指数
5
解决办法
3万
查看次数

如何在ngOnInit()之前停止调用ngOnChanges

在我的角度应用程序中,我提出了一种情况,只有在输入绑定到更改时才应调用ngOnchanges.那么,有没有办法在ngOnInit之前停止执行ngOnChanges.有没有办法实现这一目标.提前致谢.

angular

23
推荐指数
1
解决办法
1万
查看次数

如何检测Angular应用程序中与rxjs相关的内存泄漏

是否有任何工具或技术来检测"留守"或"当前活着"的可观察量,订阅.

刚刚发现一个非常令人讨厌的内存泄漏,其中组件由于缺少"取消订阅"调用而保持活动状态.我读到了关于"takeUntil"的方法,看起来还不错. /sf/answers/2882401441/

但是我仍然想知道是否有任何工具(浏览器扩展等).据我所知,Augury并未涵盖这一领域.

所有输入都非常感谢.

javascript rxjs typescript angular rxjs6

20
推荐指数
1
解决办法
1895
查看次数