【发布时间】:2019-10-27 14:00:41
【问题描述】:
我要声明一个接收异步函数结果的变量。
var eff_histo= await _eff_histo(selectedline);
await 表达式只能在异步函数中使用
【问题讨论】:
-
这在很大程度上取决于您要做什么。
-
目前还不可能,请看下面我的回答。
标签: flutter async-await
我要声明一个接收异步函数结果的变量。
var eff_histo= await _eff_histo(selectedline);
await 表达式只能在异步函数中使用
【问题讨论】:
标签: flutter async-await
你还是误会async。 async 关键字不是的意思是“在另一个线程上运行”。
要将某些代码推送到另一个线程,您需要明确地执行此操作,例如,Task.Run:
await Task.Run(() => Logger.LogInfo("Pushing new call {0} with {1} id".Fill(callNotificationInfo.CallerId));
我有一个async/await intro post,您可能会觉得有帮助。
【讨论】:
你不能在异步函数之外使用等待,尝试在本地构建你的变量并在 initState 中声明你的变量
var eff_histo;
@override
void initState() async {
super.initState()
eff_histo= await _eff_histo(selectedline);
}
【讨论】:
initState() 方法。通过更改,我指的是添加async 标签。应该创建一个新方法,然后在该方法上使用异步,然后在 initState() 中调用新方法,请参阅stackoverflow.com/a/51901311/4712391
我认为这更像是一种哲学,即同步方法不应该等待,因为其他重要任务可能会受到影响,耗时的异步任务可能会因此而耗时await 在那里很有意义。查看更多信息https://github.com/dart-lang/sdk/issues/22269#issuecomment-108458526
【讨论】: