我需要在我的应用程序上返回Future,因为我认为我的功能将花费太多时间才能完成。
所以我有两个可能的答案:使用Completer或Isolate。
是什么让我选择其中一个? 我可以在我想要的任何地方放置一个完成器,并相信它可以很好地工作吗?
这如何工作?像.. Flutter必须以60fps的速度在屏幕上绘制对吗?那么,它将在画布上绘制之后和下一个绘制之前计算这些东西吗?我很好奇,因为Flutter不是多线程的(但是看起来隔离可以做到)。所以我很困惑,不知道如何编写可信赖的代码。
而且,是否有理由不使用完成器?就像,我认为我的代码花了太多时间,但也许不是。.是否有理由检查完成时间,如果它低于阈值,我不应该使用它?
先谢谢了。
答案 0 :(得分:1)
返回未来(完成器)可确保长函数的活动与原始线程在相同的线程中。隔离自动通过其自己的事件循环自动置于其他“无共享”线程中,并且必须使用消息传递来访问或返回值。
答案 1 :(得分:-1)
本文对我了解异步内容有很大帮助:https://www.didierboelens.com/2019/01/futures---isolates---event-loop/
除了用代码解释之外,我认为结论可以回答我的问题:
因此,以下是您在开发过程中应系统考虑的一些提示:
如果不得中断代码段,请使用正常的同步过程(一个方法或多个彼此调用的方法);
如果代码段可以独立运行而不影响应用程序的流动性,请考虑通过使用Futures使用事件循环;
如果繁重的处理过程可能需要一些时间才能完成,并且可能影响应用程序的流畅性,请考虑使用隔离器。