Dart 异步处理之Future

Dart的事件循环遵循以下规则:
  • 先处理所有微任务队列的微任务
  • 再处理事件队列里事件
dart-微任务.png
Future Api
//同步操作
await Future.sync(() {
        Timer(Duration(seconds: 3), () {
            print('sync delay 3');
        });
});

//等同 Future.sync(() => [])
await Future.value([
        await Future.delayed(Duration(seconds: 1), () {
            print('delay 1...');
        })
]);

//微任务,间接调用scheduleMicrotask
await Future.microtask(() {});

//等同于 Timer.run(() {});
await Future(() {});

//返回的最先返回的Future,其他丢弃
await Future.any([]);

//微任务
scheduleMicrotask(() {});
Timer Api
//等同于 new Timer(Duration.zero, (){})
Timer.run(() {});

//打卡器 - 每隔1秒执行次
Timer.periodic(Duration(seconds:1), (timer) {});

//倒计时
Timer(Duration(seconds: 3), () {});

你可能感兴趣的:(Dart 异步处理之Future)