我有一个关于飞镖中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循环会阻止事件循环,从而阻止计时器执行。
要了解更多关于事件循环和隔离的信息,请参阅官方博客文章或一篇古老但详细的文章。