5
向UI报告进度的最佳策略-回调应该如何发生?
有时,用户会启动一项扩展的技术操作,该操作需要一段时间才能执行。在这些情况下,通常最好显示某种进度条以及有关当前正在执行哪个任务的信息。 为了避免UI和逻辑层之间的紧密耦合,通常最好通过某种代理进行通信。也就是说,后端不应该操纵自己的UI元素,甚至不应该直接与中介层进行交互。 显然,必须在某处进行一些回调才能使此工作正常进行。我通常以两种方式之一实现它: 将可变对象传递给后端,并让后端在进行时对其进行更改。发生更改时,对象会通知前端。 传递形式void f(ProgressObject)或后端调用的回调函数ProgressObject -> unit。在这种情况下,后端构造了ProgressObject,并且完全是被动的。我认为,每次要报告进度时,它都必须构造一个新对象。 这些方法的缺点和优点是什么?有没有商定的最佳使用方法?有不同的使用环境吗? 是否有完全不同的报告进度的技术被我忽略了?