Flutter中Completer和Isolates的解释和区别

2023-11-29

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

所以我有两个可能的答案:使用完成者 or an Isolate.

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

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

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

提前致谢。


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

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

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

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flutter中Completer和Isolates的解释和区别 的相关文章

随机推荐

  • Java 递归(?) 重复(?) 深度(?) 模式匹配

    我想得到ALL输入字符串中与给定模式匹配的子字符串 例如 给定字符串 aaxxbbaxb模式 a a z 0 3 b 我实际上想表达的是 所有以a开头 以b结尾的模式 但它们之间最多可以有2个字母 我想要的确切结果 及其索引 aaxxb 索
  • 使用 ToArgb() 后跟 FromArgb() 不会产生原始颜色

    这不起作用 int blueInt Color Blue ToArgb Color fred Color FromArgb blueInt Assert AreEqual Color Blue fred 有什么建议么 Edit 我正在使用
  • (PostgreSQL) 记录集中的实际记录数

    为了测试目的 我需要编写一个 SQL 查询 其中包含 结果集中作为列的实际记录数 如果我的 SELECT 得到 返回结果为 10 条记录 我需要一列 其中包含值 1 10 有没有办法在没有存储过程游标的情况下实现这一目标 我的数据 我在 P
  • 这是 C# 4 中动态绑定的漏洞吗?

    我看过一个非常有趣的帖子法比奥 莫洛的博客 如果您不想跳转到该网址 这是代码和错误 我定义了一个新的泛型类 如下所示 public class TableStorageInitializer
  • 迁移的 Iphone Build 无法连接到远程服务器

    将 worklight 6 1 项目迁移到 Mobile First 7 1 使用 IBM MobileFirst Platform Studio 7 1 0 00 20160801 2314 通过提供正确的服务器路径和上下文路径 构建应用
  • 如何从函数中多次产生值?

    所以我正在做的是 我有两个文件 一个包含一个将生成令牌的脚本 第二个文件处理该令牌 问题是 记录令牌的第二个脚本只会记录收到的第一个令牌 这就是我处理令牌的方式 const first file require first file js
  • Discord Bot Python 上命令的冷却时间

    client command pass context True async def getalt ctx msg email protected Cyber123 email protected culillo123 email prot
  • Angular 2 新 (RC1) 路由器。嵌套路由

    在子组件的测试版中 假设 child1 你可以告诉你的父母加载 导航到 不同的子组件而不是当前组件 方法如下 router parent navigate child2 router is injected in constructor 在
  • PHP5 中 SQLite3 的转义字符串

    为什么这两个功能都让我失败 或者这只是一个幻觉 outputs Hello World Hello World 你应该使用PDO访问您的数据库 因为它有准备好的陈述这比逃跑更安全 也更快 PHP 数据对象 PDO 扩展 定义了一个轻量级的
  • 在进入/离开目录时激活/停用 conda virtualenvs

    pyenv virtualenv提供了一种在进入或离开包含目录的瞬间激活环境的好方法 python version指定要激活的环境的文本文件 它适用于它所在的目录以及其中包含的所有目录 一旦我们将目录更改为它上面的目录 环境就会停用 这允许
  • Windows 应用程序中的文本框仅允许 IP 地址

    我需要一个只允许 IP 地址的文本框 我可以在 Web 应用程序中创建它 但不能在 Windows 应用程序中执行此操作 请帮助我做到这一点 使用此方法来验证IP public bool IsValidIP string addr crea
  • 嵌套 FutureBuilder 与从数据库延迟加载的嵌套调用

    我需要在我可以遵循的两种方法之间选择最佳方法 我有一个 Flutter 应用程序使用sqflite为了保存数据 在数据库内我有两个表 员工 employee id employee name dep id e12 Ada Lovelace
  • Sparklyr:如何根据列将 Spark 表居中?

    我有一个 Spark 表 simx x0 num 1 00 2 00 3 00 x1 num 2 00 3 00 4 00 x788 num 2 00 3 00 4 00 和一个名为simX tbl在连接到此的 R 环境中simx tabl
  • Oracle:将 CTE 与更新子句结合使用

    我可以使用oracle数据库中的公用表表达式进行更新吗 我收到错误ORA 00928 missing SELECT keyword当我尝试这个时 with average as SELECT avg salary FROM instruct
  • 如何在 C 中使用动态多维数组?

    有人知道如何使用 C 来使用动态分配的多维数组吗 那可能吗 从 C99 开始 C 就拥有了带有动态边界的二维数组 如果您想避免在堆栈上分配此类野兽 您应该这样做 您可以轻松地一次性分配它们 如下所示 double A n malloc si
  • 使用 Sonata Admin 处理 Doctrine json_array 字段

    是否有任何 内置 方式来管理教义json array使用 Sonata Admin 的字段 我在 Symfony Sonata 文档 或代码 中找不到任何有用的文档 或相关代码 但我希望我错过了一些东西 理想情况下 我希望看到序列化的键 值
  • 当有大量输入时,Chrome 速度很慢

    在我们的 MVC 5 项目中有一个页面 用户可以在其中检查多个资产 每个资产都由复选框和名称表示 当有大量资源 大约 800 1000 个 时 Chrome 会变得非常慢 有时甚至会显示 页面不负责任 的消息 它看起来像这样 页面部分呈现并
  • 更新时触发更新列

    我写了这个函数和这个触发器 CREATE OR REPLACE FUNCTION test4 RETURNS TRIGGER AS BODY BEGIN UPDATE cf SET vol area alt RETURN null END
  • SQL 中的 IF ELSE 语句

    SELECT S Id S Name S Version S SoftNo FROM SOFTWARE S WITH NOLOCK WHERE IF S Version 0 THEN S Version gt 0 ELSE S Versio
  • Flutter中Completer和Isolates的解释和区别

    我需要在我的应用程序上返回一个 Future 因为我认为我的函数需要太多时间才能完成 所以我有两个可能的答案 使用完成者 or an Isolate 是什么让我选择其中之一 我可以将 Completer 放在我想要的任何地方并相信它会正常工