我可以在没有异步功能的情况下使用等待吗?

时间:2019-06-13 02:34:07

标签: flutter async-await

我想声明一个接收异步函数结果的变量。

var eff_histo= await _eff_histo(selectedline);

await表达式只能在异步函数中使用

3 个答案:

答案 0 :(得分:0)

您仍然误解asyncasync关键字不是的意思是“在另一个线程上运行”。

要将某些代码推送到另一个线程上,您需要显式地执行它,例如Task.Run

await Task.Run(() => Logger.LogInfo("Pushing new call {0} with {1} id".Fill(callNotificationInfo.CallerId));

我有一个async/await intro post,您可能会有所帮助。

答案 1 :(得分:0)

我认为这更像是 哲学 ,同步方法不应该等待,因为其他重要任务可能会受到影响,花费时间的异步任务可能会花费一些时间,因此在那里等待是有道理的。查看此以获得更多信息https://github.com/dart-lang/sdk/issues/22269#issuecomment-108458526

答案 2 :(得分:-1)

您不能在异步函数外部使用await,请尝试构建变量区域设置并在initState内声明变量

var eff_histo;
@override
void initState() async {
super.initState()
eff_histo= await _eff_histo(selectedline);

}