3
所以我想爲我的Angular 2應用實現一個自定義的XHRBackend。這是我的課:在rxjs Observer上訂閱多次而不執行多個請求
import {Request, XHRBackend, BrowserXhr, ResponseOptions, XSRFStrategy} from "@angular/http";
import "rxjs/add/operator/catch";
import "rxjs/add/observable/throw";
import {SlimLoadingBarService} from "ng2-slim-loading-bar";
export class LoadingBarXHRBackend extends XHRBackend {
constructor(_browserXhr: BrowserXhr, _baseResponseOptions: ResponseOptions, _xsrfStrategy: XSRFStrategy, private slimLoadingBarService: SlimLoadingBarService) {
super(_browserXhr, _baseResponseOptions, _xsrfStrategy);
}
createConnection(request: Request) {
this.slimLoadingBarService.start();
let xhrConnection = super.createConnection(request);
xhrConnection.response.share().subscribe(() => {
this.slimLoadingBarService.complete();
});
return xhrConnection;
}
}
正如你可以看到我嘗試使用.share()方法中所描述的here,但它不工作,我希望它的方式。
我想「掛鉤」到XHR請求的創建和完成以顯示加載欄。但是如果我離開那個.share(),我會爲每個.subscribe()調用獲得一個單獨的HTTP請求。 ?
但是,如果使用.share()我的第二次認購事項將不會在所有:(
什麼我做錯了感謝執行
也許http://stackoverflow.com/questions/36271899/what-is-the-correct-way-to-share-the-result-of-an-angular-2-http-network-call-in –