检测任何http请求的开始以及angular2中所有请求的完成

时间:2016-10-10 12:35:57

标签: angular httprequest

是否有可能检测到任何http请求的开始以及何时以angular2结束调用? 这是我的自定义http服务:

CASE WHEN ...

1 个答案:

答案 0 :(得分:2)

在角度2中执行此操作的推荐方法是提供httpwrapper服务。这看起来像这样:

@Injectable()
export class CustomHttp extends Http {
    private activeCalls: number;
    private store: Store<ApplicationState>;

    constructor(backend: ConnectionBackend, defaultOptions: RequestOptions, store: Store<ApplicationState>) {
        super(backend, defaultOptions);
        this.store = store;
        this.activeCalls = 0;
    }

    get(url: string, options?: RequestOptionsArgs): Observable<Response> {
        this.httpCallRequested();

        return super.get(url, options).finally(
            () => {
                this.httpCallReady();
            }
        );
    }
}

这是一个不完整的例子。在这里找到完整的一个:https://github.com/brechtbilliet/winecellar/blob/master/src/app/customHttp.ts

此类包装所有http调用,并允许您在执行之前和之后执行某些操作。 要在任何地方使用此包装器而不是普通的HTTP服务,您应该在app模块中提供此类。这可以这样做:

@NgModule({
    imports: [BrowserModule, AboutModule, AuthenticationModule, CommonLogicModule, StockModule, routing],
    declarations: [ApplicationContainer],
    exports: [ApplicationContainer],
    providers: [
        AppSandbox,
        {
            provide: Http,
            useFactory: customHttpFactory,
            deps: [XHRBackend, RequestOptions, Store]
        }
    ]
})

注意提供者部分。如果他们注入了#http; http:感谢角度2 DI机制。