我不知道为什么以下代码无法正常工作。 我也在DartPad上尝试过。结果是一样的。
import 'dart:async';
Future<bool> longWait(String prefix) async {
for (int i = 0; i < 5; i++) {
print('$prefix $i');
}
return true;
}
Future testAsync() async {
print('starting');
longWait('Async');
print('done');
}
main(List<String> arguments) {
testAsync();
}
the result is: starting Async 0 Async 1 Async 2 Async 3 Async 4 done but it has to be this: starting done Async 0 Async 1 Async 2 Async 3 Async 4
答案 0 :(得分:1)
由于异步功能开始处的Dart 2同步代码已同步执行。
这与Dart 1不同。
一种解决方法是
Future<bool> longWait(String prefix) async {
await Future.microtask((){});
for (int i = 0; i < 5; i++) {
print('$prefix $i');
}
return true;
}
await
之后的代码被异步执行,并导致所需的行为。 (已在DartPad中测试)