对于你们中的许多人来说,这可能是一个非常简单的问题 - 但是当服务器执行耗时的操作时,我一直试图找出一种在View中呈现更新的策略。
情况就是这样。我有一个视图,其中有一个按钮,表示“批准”。此批准需要调用某种Action或某种类型的后进程来执行可能需要20-30秒的繁重操作。
在此期间,我想用某种处理gif动画更新视图,并附加文本,如“执行操作A”,“执行操作B”等。
实现这一目标的最佳策略是什么?
答案 0 :(得分:2)
这里有一个你可能不喜欢的答案:甚至不想尝试从服务器获得一些“进度更新”。
从商业角度看这个任务。提供一些反馈的目的是给用户一些温暖和模糊的感觉,他们没有被遗忘,他们要求他们的计算机做的任务没有被放弃。您愿意承担多少费用?
最简单的此类设备是简单的进度条。尽管大多数体验用户都不相信它会告诉他们当任务完成时,他们仍然相信如果它正在移动某些事情。
我的解决方案是将异步操作发送到服务器以关闭操作。然后显示完全由javascript管理的进度条。它开始迅速但随着它的进展而减慢,以至于它实际上永远不会完成,但似乎确实取得了一些进展。当异步操作完成时,将进度条显示为完成,然后将其删除。
其他解决方案的成本要高得多,但是如果不是实际上是负面的话,这种方法的好处几乎可以忽略不计,毕竟它们实施起来很复杂并且更容易出错。
答案 1 :(得分:1)
我必须承认我没有尝试,但我愿意这样做。
我认为SignalR可能是个不错的选择。
答案 2 :(得分:0)
虽然这在理论上听起来不错,但我会将其作为后台操作,然后在任务完成时通过电子邮件或短信向用户发送通知。
否则你需要
并非不可能,但很多活动部件。