有应用程序等待初始XHR加载吗?

时间:2017-10-20 19:54:15

标签: angular

在我的应用程序中,我有一个初始化XHR请求,我想让整个应用程序等待此XHR完成。将其视为初始化应用程序。

我正在使用angular-cli所以我有标准的文件和结构。

在顶部,我app.component.html只包含一行:<router-outlet></router-outlet>

我试图让路线保护工作,但是在使用路线时会检查这些。

任何要点都会有用。

1 个答案:

答案 0 :(得分:0)

任何特殊原因不使用HttpClient ??

我使用Observable。这是解决问题的一种方法。

在您的服务文件中:

1 - 创建一个BehaviorSubject
letThemKnow = new BehaviorSubject<boolean>(false);
2 - 从您调用HttpClient或XHR的函数返回一个observable,类似于下面的代码。

fetchData(): Observable<any> { return this.http.get<T>(URL). });

app.components.tsngOnInit内调用fetchData()并订阅

this.yourService.fetchData().subscribe( () => { this.yourservice.letThemKnow.next(true); });

然后,只要您的应用在数据或应用程序准备就绪后需要启动。只需订阅并检查该服务是否正确。

类似于此的东西。
    this.yourservice.letThemKnow.subscribe((state: boolean) => { if (state) { //do this }

这里是RxJs http://reactivex.io/rxjs/