我使用定时器。周期性地在不同的时间调用一些函数。我所面临的问题是,计时器比现实生活慢得多,例如,你将在我的代码中看到计时器应该在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);
}
}