好的,所以我有一个服务来检查是否已加载特定的 3rd 方 JS 插件。我想监听它何时进入 DOM,同时它处于未定义状态。我怎么做?到目前为止,我已经尝试使用一个主题并定期重试,但我无法让它工作:
$apiReady: Subject<boolean> = new Subject();
RegisterOnNewDocumentLoadedOnDocuViewareAPIReady(reControl: any): any {
this.$apiReady.asObservable().subscribe((isReady: boolean) => {
if (isReady) {
//Do something
return of(isReady);
}
})
let IsreControlInitialized = ThirdPartyAPI.IsInitialized(reControl);
if (IsreControlInitialized) {
this.$apiReady.next(true);
}
return throwError(false);
}
然后在组件中:
this._apiService.RegisterOnAPIReady(this.elementID).pipe(
retryWhen(error => {
return error.pipe(delay(2000)); //<---- Doesn't work
})).subscribe((response: boolean) => {
if (response) {
//Do some stuff
}
});
我的意图是检查 API 元素是否已加载,如果没有在 2 秒内重试,但这不起作用,有人可以帮忙吗?