【发布时间】:2019-11-15 15:01:45
【问题描述】:
我正在尝试在 Angular 8 中创建具有延迟的递归服务器连接方法。
我试过了:
public connectToServerSafely(): Observable<boolean> {
if (this.isConnecting) {
return this.connectToServerSafely().pipe(delay(5000));
} else if (this.isConnected) {
return of(true);
} else {
return this.connectToServer();
}
}
connectToServer 方法返回 Observable
问题是这种延迟方法,我不知道为什么,但在建立连接之前,我面临着近 2000 次 connectToServerSafely() 方法调用。 1 秒后建立连接。
为什么延迟方法并没有真正推迟 connectToServerSafely 方法的递归调用(类似于 setTimeout 方法)?
【问题讨论】:
-
你在哪里设置
isConnecting和this.isConnected -
delay运算符延迟从可观察源中发射值。它不会以任何方式阻塞调用代码。 -
这些参数在 connectToServer() 方法中设置。这个方法的第一行是this.isConnecting = true。当建立连接时,我们设置 this.isConnected = true 和 this.isConnecting = false....
标签: javascript angular rxjs observable