我希望通过逐步增加的时间间隔来触发 retrywhen()。
socketResponse.retryWhen(attempts => {
return attempts.zip(Observable.range(1, 4)).mergeMap(([error, i]) => {
console.log(`[socket] Wait ${i} seconds, then retry!`);
if (i === 4) {
console.log(`[socket] maxReconnectAttempts ${i} reached!`);
}
return Observable.timer(i * 1000);
});
});
上面的代码运行良好。
在连接错误时(第一次)
- [socket] 等待1秒,然后重试!//等待1秒
- [socket] 等待2秒,然后重试!//等待2秒
在连接成功时
//连接成功。
在连接错误时(第二次)
- [socket] 等待3秒,然后重试!//等待3秒
- [socket] 等待4秒,然后重试!//等待4秒
现在我想在套接字连接成功时重置等待时间。
期望的输出:
在连接错误时(第一次)
- [socket] 等待1秒,然后重试!//等待1秒
- [socket] 等待2秒,然后重试!//等待2秒
在连接成功时
//连接成功。
在连接错误时(第二次)
[socket] 等待1秒,然后重试!//等待1秒
[socket] 等待2秒,然后重试!//等待2秒
但我不知道如何重置retrywhen()的时间间隔。