dart - 飞镖中的异步等待 Future.delayed
问题描述
我无法理解为什么一段代码打印未来为空
void main() async {
task1();
String str = await task2();
task3(str);
}
void task1() {
print('ring');
}
Future<String> task2() async {
Duration dur = Duration(seconds: 3);
String res;
await Future.delayed(dur, () {
res = 'a bright one!';
return res; // return statement inside the callback.
});
}
void task3(String str) {
print('the future is $str');
}
虽然这可以正常工作并且具有打印“未来是光明的”的预期行为
void main() async {
task1();
String str = await task2();
task3(str);
}
void task1() {
print('ring');
}
Future<String> task2() async {
Duration dur = Duration(seconds: 3);
String res;
await Future.delayed(dur, () {
res = 'a bright one!';
});
return res;
}
void task3(String str) {
print('the future is $str');
}
我是异步编程的新手,但我的理解是,作为 Future.delayed 中的第二个参数的回调是在延迟后执行的,我不明白为什么在此处放置 return 语句会破坏代码。我试图在调试模式下运行代码来跟踪代码,但我不明白到底发生了什么。非常感谢所有帮助
解决方案
推荐阅读
- android - clang++:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)。我使用 ndk 版本 21.0.6113669
- conditional-statements - 自适应卡如何使用条件语句。如果/否则或何时
- git - Git 暂存钩子
- android-studio - 找不到方法,Android Studio Arctic Fox (2020.3.1) Beta 3
- julia - 在 Julia 中运行因子模型的问题
- mysql - ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) // BIG SUR 11.2.3
- docusignapi - Looking for Docusign PHP Code example to send the pdf
- mql4 - 为 mql4 创建重绘指标
- javascript - 如何防止用户在 React js 中下载音频?喜欢 Spotify 网站
- node.js - 节点应用程序流量未在 Charles Proxy 中捕获?