0

我需要在我的应用程序上返回一个 Future,因为我认为我的功能需要太多时间才能完成。

所以我得到了两个可能的答案:使用CompleterIsolate

是什么让我选择其中之一?我可以在任何我想要的地方放置一个 Completer 并相信它会正常工作吗?

这是如何工作的?就像.. Flutter 必须以 60fps 的速度在屏幕上绘制,对吗?那么,它会在画布上绘制之后和下一次绘制之前计算这些东西吗?我很好奇,因为 Flutter 不是多线程的(但似乎隔离可以做到这一点)。所以我很困惑,不知道如何编写可信赖的代码。

而且,是否有理由不使用 Completer?就像,我认为我的代码花费了太多时间,但也许不是。是否有理由检查完成所需的时间,如果它低于阈值我不应该使用它?

提前致谢。

4

2 回答 2

2

这篇文章帮助我理解了这些异步的东西:https ://www.didierboelens.com/2019/01/futures---isolates---event-loop/

除了用代码解释之外,我认为结论回答了我的问题:

因此,您应该在开发过程中系统地考虑以下提示:

如果代码段MAY NOT被中断,使用正常的同步过程(一个方法或多个方法相互调用);

如果代码片段可以独立运行而不影响应用程序的流动性,请考虑通过使用期货来使用事件循环;

如果繁重的处理可能需要一些时间才能完成并且可能会影响应用程序的流动性,请考虑使用隔离。

于 2019-02-04T15:52:01.713 回答
1

返回 Future (Completer) 可确保长函数的活动与原始线程在同一个线程中。一个 Isolate 自动在一个不同的共享线程中,它有自己的事件循环,并且必须使用消息传递来访问或返回值。

于 2018-12-31T22:43:44.937 回答