【发布时间】:2018-03-05 23:29:49
【问题描述】:
我正在我的 Angular 项目中使用自动重新连接实现 websocket 层。我有以下代码来执行自动重新连接,它按预期工作。
我现在需要在重新订阅成功时执行一个方法/代码块。我玩过 do、catch 等,但似乎无法解决问题。
如果我理解 retryWhen 运算符,它将作用于错误状态并基本上传递一个完整的。我可以看到这一点,因为原来的 websocket 已关闭,而新的 websocket 已打开。
.messages
.map(res => { return JSON.parse(res)})
.retryWhen(
attempts => {
console.log(attempts)
return attempts
.do((error) => { return 1 })
.mergeMap(
(error, count) => {
console.log(`Wait ${count} seconds, then retry API!`);
return Observable.timer(count * 1000);
})
})
.share()
- 是否有方法/操作符可以执行一次方法/代码块 错误被清除,子订阅重新订阅 成功了吗?
【问题讨论】: