Dart并发编程04-延时执行任务

42 阅读1分钟

有时候,我们想要模拟一个长时间执行的任务,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 的原因。