【发布时间】:2020-04-07 09:36:27
【问题描述】:
背景 - Angular + .net Core WebApi,假设我正在构建一个时间管理应用程序来跟踪你在任务上花费了多少时间 -> 用户在前端创建一个任务并启动它 -> 有一个计时器显示经过的时间。
这个想法 - 经过的时间来自后端。当用户通过服务在前端启动任务时,我在后端启动一个计时器并将经过的时间传递回前端,以便我可以将其展示给用户。即使后端和前端之间存在连接问题,我也想显示正确的值。
图表:后端流每秒发出一次值(我向用户显示的经过时间),但存在连接故障,6 秒后它冻结了片刻,然后发送 9(“0:09”),这可能会造成混淆用户(“之前是 6 秒,现在是 9 秒??”)。所以我在每秒发出新值的前端创建和间隔。每秒钟我都想检查后端流是否发送了新值,如果没有,我想获取以前的值并对其进行修改,以便用户获得正确的值。
bStream => ---1---2---3---4---5---6---x---x---9
fStream => ---1---2---3---4---5---6---7---8---9
What user sees:
00:01 -> 00:02 -> 00:03 -> 00:04 -> 00:05 -> 00:06 (freeze) -> 00:09
What I want to user to see:
00:01 -> 00:02 -> 00:03 -> 00:04 -> 00:05 -> 00:06 -> (freeze - frontend knows there is no new value so adds 1 second to previous)
So, it should look like that:
00:01 -> 00:02 -> 00:03 -> 00:04 -> 00:05 -> 00:06 -> 00:07 -> 00:08 -> 00:09
我正在努力从哪里开始。
快速调整了两个流,但不知道如何找到它 bStream 没有发出新值。
【问题讨论】:
-
为什么不在前端花费时间?
标签: javascript typescript .net-core rxjs ngrx