RxJS timeout()对部分日期/时间戳失效问题求助
RxJS timeout() 操作符日期兼容性异常问题
我来帮你拆解这个timeout()操作符遇到的特殊问题:该操作符针对部分未来日期会抛出错误,部分特定日期或时间戳无法正常触发预期的超时逻辑。
问题场景复现
测试中发现两种截然不同的表现:
- 时间戳
1609353000000(对应UTC时间2020年12月30日周三 18:30:00):使用此日期时,timeout()无法正常工作,会直接抛出错误 - 时间戳
1924885800000(对应UTC时间2030年12月30日周一 18:30:00):使用此日期时,timeout()可以按预期正常执行
测试基准的当前日期为:2020年3月19日周四 14:40:58(时间戳:1584628858530)
测试代码
你可以通过替换时间戳来复现两种场景:
import { interval } from 'rxjs'; import { timeout } from 'rxjs/operators'; const seconds = interval(1000); seconds.pipe( // 当前测试基准日期:2020年3月19日周四 14:40:58 → 时间戳 1584628858530 // 异常场景时间戳:1609353000000 → UTC 2020年12月30日周三 18:30:00,无法正常工作 // 正常场景时间戳:1924885800000 → UTC 2030年12月30日周一 18:30:00,可正常工作 timeout(new Date(1609353000000)), // 替换此处时间戳即可切换场景 ) .subscribe( value => console.log(value), err => console.log(err) );
你可以参考RxJS官方文档中的示例2,进一步理解timeout()接收日期类型参数的底层逻辑。
内容的提问来源于stack exchange,提问作者manu
相关产品推荐
相关产品推荐

