在Dart中,您可以通过拨打Future
告诉VM等待await
。
问题是你只能在异步函数中调用await
,它会返回一个...... Future
。
因此,如果我有一个不需要很长时间运行的函数,并且必须在类型为而不是异步的函数中运行,那么如何打破异步链?
答案 0 :(得分:4)
没有打破异步循环的事情。可以使用同步函数来调用异步代码,但是当同步函数返回时,异步代码的结果仍然可用。
答案 1 :(得分:2)
同步函数和异步函数之间的区别在于前者在返回时完成,而后者在返回时仍然在后台工作,这就是为什么它返回Future
时将完成的时间#&# 39; s 真的完成了。
这是区别 - 异步函数是返回Future
的函数。 async
标记不是使函数异步的原因,它只是一种实现异步函数的方式。您还可以使用没有async
标记的函数返回Future
。
您可以从同步函数调用异步函数。但是,同步函数无法延迟其返回,因此必须在将来完成之前返回。它可以在未来设置一个监听器,future.then((value) { doSomethingWith(value); })
,但肯定只有在同步函数返回后才会调用该监听器。 then
- 调用也会返回一个未来,因此同步函数必须忽略一些Future
。没关系。当您不需要结果时,您可以忽略未来。
无论您做什么,在返回之前,您都无法在同步函数中获得Future
的结果。