例如下面的代码

var Cake thisCake = new CheeseCake();
thisCake = await fetchGreenTeaCakeOnline();
if (thisCake.isCheeseCake) {
    print('This is still a cheese cake.')
} else {
    print('The cake is updated')
}
thisCake最初是cheeseCake的实例,它将被异步分配为GreenTeaCake的实例。 if子句是否将等待await赋值的执行执行,还是将忽略thisCake的数据依赖性而执行?

更新:由于Günter Zöchbauer,修复了语法错字

最佳答案

await等待Future完成。
在您的示例中,thisCake将获取分配的Future,然后await等待其完成。

你可能宁愿

thisCake =等待fetchGreenTeaCakeOnline()

这样await等待Future完成,并且将期货值分配给thisCake

09-11 22:12