gpt4 book ai didi

asynchronous - Dart编程语言的异步功能无法正常工作

转载 作者:行者123 更新时间:2023-12-03 03:01:50 26 4
gpt4 key购买 nike

我不知道为什么下面的代码不能正常工作。
我也在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();
}

结果是:
开始
异步0
异步1
异步2
异步3
异步4
完成

但必须是这样的:
开始
完成
异步0
异步1
异步2
异步3
异步4

最佳答案

由于异步功能开始处的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中测试)

关于asynchronous - Dart编程语言的异步功能无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54074075/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com