如何摆脱异步循环?

时间:2018-03-16 05:34:23

标签: dart

在Dart中,您可以通过拨打Future告诉VM等待await

问题是你只能在异步函数中调用await,它会返回一个...... Future

因此,如果我有一个不需要很长时间运行的函数,并且必须在类型为而不是异步的函数中运行,那么如何打破异步链?

2 个答案:

答案 0 :(得分:4)

没有打破异步循环的事情。可以使用同步函数来调用异步代码,但是当同步函数返回时,异步代码的结果仍然可用。

答案 1 :(得分:2)

同步函数和异步函数之间的区别在于前者在返回时完成,而后者在返回时仍然在后台工作,这就是为什么它返回Future时将完成的时间#&# 39; s 真的完成了。 这是区别 - 异步函数是返回Future的函数。 async标记不是使函数异步的原因,它只是一种实现异步函数的方式。您还可以使用没有async标记的函数返回Future

您可以从同步函数调用异步函数。但是,同步函数无法延迟其返回,因此必须在将来完成之前返回。它可以在未来设置一个监听器,future.then((value) { doSomethingWith(value); }),但肯定只有在同步函数返回后才会调用该监听器。 then - 调用也会返回一个未来,因此同步函数必须忽略一些Future。没关系。当您不需要结果时,您可以忽略未来。

无论您做什么,在返回之前,您都无法在同步函数中获得Future结果