颤振定时器.周期比现实生活慢



我使用定时器。周期性地在不同的时间调用一些函数。我所面临的问题是,计时器比现实生活慢得多,例如,你将在我的代码中看到计时器应该在5秒内完成,但在现实生活中它需要25秒才能完成。

void startTheTimer(){
var counter = 5;
final zeroDurationTimer = Timer.run(() {
_StartDataCollection();
});
Timer.periodic(const Duration(seconds: 5), (timer) {
print(timer.tick);
counter--;
if (counter == 2) {
_StopDataCollection();
}else if (counter == 1){
createUser();
}
if (counter == 0) {
print('Cancel timer');
timer.cancel();
print(numbers.length);
print(fifo.length);
}
});
}

编译器上的打印显示定时器刻度为1-2-3-4-5,但打印2花费的时间太长,然后其余的刻度也是如此。有人知道是怎么回事吗?

Timer.periodic(const Duration(seconds: 5), (timer) { //do function }平均花费5s要执行这个函数

那么,如果你执行这个函数5次,它将花费25s

更改为1s将工作:

Timer.periodic(const Duration(seconds: 1), (timer) {
print(timer.tick);
counter--;
if (counter == 2) {
_StopDataCollection();
}else if (counter == 1){
createUser();
}
if (counter == 0) {
print('Cancel timer');
timer.cancel();
print(numbers.length);
print(fifo.length);
}
});

或使用for-loop而不是计时器

for(int i = 0; i < 5; i++){
await Future.delayed(Duration(seconds: 1));
counter--;
print(counter);
if (counter == 2) {
_StopDataCollection();
}else if (counter == 1){
createUser();
}
if (counter == 0) {
print('Cancel timer');
print(numbers.length);
print(fifo.length);
}
}

相关内容

  • 没有找到相关文章

最新更新