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() 呼び出しで始まりますか、それともメインが終了してタスク キューが処理されるときに始まりますか? 私が読んだドキュメントは、この 1 つの点について少しあいまいです。

推測する必要がある場合、非同期実行は file.readAsString() の呼び出しから始まると思います。私は正しいですか?

4

1 に答える 1

2

main()「同期実行の現在のスレッド」が終了したときに開始されます。
の一部readAsStringは同期的に実行されますが、Future を返すため、readAsString何らかの非同期操作内のどこかで呼び出されたことは明らかです。これは、後で実行するようにスケジュールされていることを意味します。が終了するmainと、イベント キューが処理され、次にスケジュールされた非同期操作が実行されます。

于 2014-08-22T10:41:50.353 に答える