首页 > 解决方案 > 飞镖中的异步等待 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 语句会破坏代码。我试图在调试模式下运行代码来跟踪代码,但我不明白到底发生了什么。非常感谢所有帮助

标签: dart

解决方案


推荐阅读