main(){
PrintLotsOfStuff();
GoShopping();
HaveAGoodDay();
}
PrintLotsOfStuff(){
printDailyNewsDigest();
printWinningLotteryNumbers();
printWeatherForecast();
printBaseballScore();
}
async printDailyNewsDigest() {
var newsDigest = await gatherNewsReports();
print (newsDigest);
}
gathernewsReports() {}
если мы посмотрим на https://dart.dev/tutorials/language/futures,, мы увидим, что collectNewsReport () и print (newsDigest) запускаются после всех функций в функции, вызвавшей асинхронную функцию.
Однако в ситуации, которую я изложил выше, есть еще один уровень. В таком случае как выглядит поток?
Сначала PrintLotsOfStuff()
вызывает printDailyNewsDigest()
, что вызывает gatherNewsReports()
, что затем приостанавливается, возвращая управление обратно printLotsOfStuff()
.
Затем выполняется printWinningLotteryNumbers, printWeatherForecast и printBaseballScore. Что будет дальше, если ожидающий еще не вернулся?
Возвращается ли он на верхний уровень и затем запускает GoShopping()
и HaveAGoodDay()
?