为什么“await”在异步方法中不起作用?

问题描述 投票:0回答:1

为什么“等待”不起作用?

Future<void> f1() async{
  Future.delayed(Duration(seconds:2), (){
    print('f1');
  });
}

void main() async{
  print('start');
  await f1();
  print('end');
}

输出

start
end
f1

但是

await
在下一个代码中工作。

Future<void> f1() async{
  return Future.delayed(Duration(seconds:2), (){
    print('f1');
  });
}

void main() async{
  print('start');
  await f1();
  print('end');
}

输出

start
f1
end

为什么????

我不明白......

flutter dart asynchronous async-await
1个回答
0
投票

因为在第一个代码块中

f1()
被等待,而它的子
Future
则没有。第二次它就回来了。如果你想等延迟的
Future
,也可以
await
。像这样

Future<void> f1() async{
 await Future.delayed(Duration(seconds:2), (){
    print('f1');
  });
}

void main() async{
  print('start');
  await f1();
  print('end');
}

© www.soinside.com 2019 - 2024. All rights reserved.