我正在尝试使 while 循环将语句精确循环一秒钟,然后停止。我在 DartPad 中尝试过此操作,但它会使浏览器窗口崩溃。
void main(){
var count = 0.0;
bool flag = true;
Future.delayed(Duration(seconds: 1), (){
flag = false;
});
while (flag){
count++;
}
print(count);
}
Run Code Online (Sandbox Code Playgroud)
难道我做错了什么?
我喜欢你试图弄清楚的方式Future
。在我理解这些东西之前,我就和你一样。它有点像线程,但在某些方面有很大不同。
您编写的 Dart 代码是单线程的。通过写作Future.delayed
,你并没有开始工作。除非您通过从该主函数返回来释放线程,否则它的执行不会发生。
如果 Main 标记为异步,则不必返回。
两个操作必须“同时”运行才能像您尝试的那样相互交互。实现的方法是调用Future.wait
以获取依赖于两个 future 的 future。编辑:这两个操作都必须在每一步都放弃执行,以便另一个操作可以控制单个线程。因此,如果有循环,则必须await
在其中进行某种调用才能执行其他操作。
这是代码的修改版本,对我来说大约是 215:
Future main() async {
var count = 0.0;
bool flag = true;
var futureThatStopsIt = Future.delayed(Duration(seconds: 1), (){
flag = false;
});
var futureWithTheLoop = () async {
while (flag){
count++;
print("going on: $count");
await Future.delayed(Duration(seconds: 0));
}
}();
await Future.wait([futureThatStopsIt, futureWithTheLoop]);
print(count);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9921 次 |
最近记录: |