2
import 'dart:io';
import 'dart:async';

void printDailyNewsDigest() {
  File file = new File("dailyNewsDigest.txt");
  Future future = file.readAsString();
  future.then((content) {
    print(content);
  });
}

void main() {
  printDailyNewsDigest();
  printWinningLotteryNumbers();//does something synchronous
  printWeatherForecast();//does something synchronous
  printBaseballScore();//does something synchronous
}

我对 Dart 中的异步操作,特别是上述代码中的异步操作有一个简单的问题。上面的代码什么时候开始异步执行?异步执行是从 file.readAsString() 调用开始还是在 main 退出并处理任务队列时开始?我阅读的文档对这一点有点模糊。

如果我不得不猜测,我猜异步执行将从调用 file.readAsString() 开始。我对吗?

4

1 回答 1

2

它在main()“同步执行的当前线程”完成时开始。
的一部分readAsString是同步执行的,但是因为它返回一个 Future ,所以很明显在某个readAsString异步操作内部的某个地方被调用了。这意味着它被安排在以后执行。完成main后,处理事件队列并执行下一个计划的异步操作。

于 2014-08-22T10:41:50.353 回答