3

这是一个简单的问题。假设我有一个很长的循环要执行,让用户了解进度会很好吗?例如,我将打印到目前为止已执行的循环数以及剩余的循环数。我遇到的问题是这些输出在循环完成之前不会被可视化,因此没有必要显示它们。我确信 dart 中有一些方法可以作为浏览器的某种处理程序,以在我想要时执行任务和事件并继续运行循环。我是飞镖新手,希望有人能回答这个问题。谢谢你。

PS:如果你不知道怎么做,你可以给我任何关键字的想法,我可以用来在 dart 文档中寻找这个特殊功能,这将非常有帮助。

4

2 回答 2

4

您可以深入了解 Isolates,它允许在支持的浏览器上进行后台工作。

https://api.dartlang.org/docs/channels/stable/latest/dart_isolate.html

没有像 DoEvents() 这样简单的事情,但所有的部分都在那里。

于 2013-12-06T06:10:20.540 回答
1

我也认为 Isolates 是最好的方法,但不久前在浏览器上使用它们并没有成功,但最近在 Isolates 中进行了更大的重构。

有谁知道当前的客户端隔离示例?@kevmoo 引用的 API 文档包含指向不再存在的 Isolates 文章的链接(可能由于提到的重构而必须重写)。

另一种方法是在完成大量工作后返回并在循环中重复调用的方法,直到它返回例如 true 表示已完成(false 表示尚未完成)。当您使用scheduleMicrotask(doChunk)或其他任务调用此方法时,每次在实际调用该方法之前都会new Timer(() => doChunk())获得一些空气( )。import 'dart:async';

于 2013-12-06T06:26:31.870 回答