rxjs超时:区分过期时间和源错误
使用RxJS 6.5,我订阅了一个流,我想采取两种不同的行动: -当源代码出现错误时 -另一种情况是,当源发送数据超时时间过长时 这是我目前拥有的 source$.pipe timeoutWith5000,记录'timeout!', catchErrorlog“错误!” 订阅 函数logmsg{ console.logmsg; 回收废品; } 当我的源代码发出时间超过5000毫秒时,我会得到预期的结果:超时 但是,当我的源代码在5000ms之前抛出错误时,两行都会执行。似乎只要源没有发射,即使发生错误,也会触发timeoutWith 如何设置管道,使超时逻辑仅在实际时间已过时运行,而不是因为流因错误而中止rxjs超时:区分过期时间和源错误,rxjs,observable,Rxjs,Observable,使用RxJS 6.5,我订阅了一个流,我想采取两种不同的行动: -当源代码出现错误时 -另一种情况是,当源发送数据超时时间过长时 这是我目前拥有的 source$.pipe timeoutWith5000,记录'timeout!', catchErrorlog“错误!” 订阅 函数logmsg{ console.logmsg; 回收废品; } 当我的源代码发出时间超过5000毫秒时,我会得到预期的结果:超时 但是,当我的源代码在5000ms之前抛出错误时,两行都会执行。似乎只要源没有发射,即使发
看起来您使用的正确操作符是timeout,而不是timeoutWith,我会解释 时间与意志同在——这不是你的需要 超时将-最适合您的需要/ 在管道中使用超时应该如下所示:
source$.pipe(
catchError(() => log('func error!')), // will log only when your source throws an error
timeout(5000),
catchError(() => log('timeout error!')) // will log only if your source as timed-out for 5000
).subscribe();