有时候,我们想要模拟一个长时间执行的任务,Future.delayed
提供了这一个功能。
void main(List<String> args) {
print('任务1');
Future.delayed(
Duration(seconds: 2),
() => print('任务2')
);
print('任务3');
}
这里,Future.delayed
方法接收两个参数:第一个参数设置执行任务前需要等待的时间;第二个参数是需要执行的任务。
运行上面的代码,我们会先得到下面的结果:
任务1
任务3
大概 2 秒钟后,我们会看到 任务2
输出到控制台:
任务1
任务3
任务2
Exited.
Dart 首先执行同步代码 任务1
。在遇到 Future.delayed
时,Dart 会把 任务2
放到事件队列中,而不是马上执行。然后,Dart 继续执行同步代码 任务3
。最后,Dart 在执行完所有同步代码,并且等待 2 秒钟后,从事件队列中取出 任务2
执行,这也是 任务3
执行完毕后,没有马上执行 任务2
的原因。