While循环停止计时器运行(Dart)



我有一个关于飞镖中while循环的问题。

这是一段代码:

bool temp = false;
Timer(Duration(milliseconds: 5), () {
print('In timer:' + temp.toString());
temp = true;
});
Timer(Duration(milliseconds: 1000), () {
print('In timer:' + temp.toString());
});

结果正是我所期望的:

false (after 5 ms)
true (after 1 s)

但当添加while循环时:

bool temp = false;
Timer(Duration(milliseconds: 5), () {
print('In timer:' + temp.toString());
temp = true;
});
while (!temp) {}
print('End');

我预计它会打印出这样的控制台:

false
End (immediately after false)

但while循环中的所有内容都被卡住了,计时器似乎不再运行来更新temp了。我能得到什么解释吗?

while循环和计时器在同一隔离区中运行,因此while循环会阻止事件循环,从而阻止计时器执行。

要了解更多关于事件循环和隔离的信息,请参阅官方博客文章或一篇古老但详细的文章。

最新更新