Flutter:异步多线程结合

embedded/2024/11/14 18:23:10/

示例一

main() => isoLoadguncmo();void isoLoadguncmo() {Future(() {print('1来了');return compute(func, 123);}).then((value) => print('1结束'));Future(() {print('2来了');return compute(func, 123);}).then((value) => print('2结束'));Future(() {print('3来了');return compute(func, 123);}).then((value) => print('3结束'));Future(() {print('4来了');return compute(func, 123);}).then((value) => print('4结束'));Future(() {print('5来了');return compute(func, 123);}).then((value) => print('5结束'));
}func(int message) {}

在这里插入图片描述
主线程中的异步Future,会按顺序执行1-5,
Future内的子线程compute则是无序的执行。

如果将return compute(func, 123);代码中的return去除,则会打印
在这里插入图片描述
因为

Future(() {print('1来了');compute(func, 123);
}).then((value) => print('1结束'));
可以看做是一个整体

示例二

main(){Future x = Future((){print('异步任务1');scheduleMicrotask((){print('微任务1');});});x.then((value){print('异步任务1:返回结果');});
}

在这里插入图片描述
异步任务1x.then 是一个整体,所以先执行,后执行微任务1

示例三

main(){Future x = Future((){print('异步任务1');});x.then((value){print('异步任务1:返回结果');});scheduleMicrotask((){print('微任务1');});
}

如果是同级的情况下,微任务>事件队列,微任务先执行,后执行事件队列中的异步
在这里插入图片描述

示例四,将耗时操作放入子线程compute,防止主线程卡UI

return GestureDetector(onTap: () {compute(func, 123);},
)
func(){for(int i = 0;i<10000000;i++){}
}

http://www.ppmy.cn/embedded/137566.html

相关文章

HTTP的诞生:它解决了哪些网络通信难题?

引言 在互联网发展初期,网络通信面临许多挑战,例如设备兼容性、数据传输标准化以及信息访问效率等问题。超文本传输协议(HTTP,HyperText Transfer Protocol)的出现,成功解决了这些问题,使全球信息交换更加顺畅,成为了现代互联网的核心基石。本文将从技术和应用的角度分…

Ubuntu24.04安装Perforce服务

安装 参考链接:https://www.perforce.com/manuals/p4sag/Content/P4SAG/install.linux.packages.install.html Perforce是一款收费的版本控制管理工具,当然其中也有一些免费的教学版本,应需要下载。 下载网址: https://www.perforce.com/downloads/helix-core-p4d安装前…

Docker在微服务架构中的最佳实践

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 Docker在微服务架构中的最佳实践 Docker在微服务架构中的最佳实践 Docker在微服务架构中的最佳实践 引言 Docker 概述 定义与原理…

Android【01】TRTC实现跨应用屏幕录制

Android TRTC实现跨应用屏幕录制&#xff1a;完整技术方案 引言 在移动应用开发中&#xff0c;跨应用屏幕录制是一个常见需求。本文将详细介绍如何使用腾讯云TRTC SDK在Android平台实现跨应用屏幕录制功能&#xff0c;包含完整的实现流程和代码示例。 技术方案概述 系统架构…

Brave127编译指南 Windows篇:配置Git(四)

1. 概述 在Brave浏览器的开发过程中&#xff0c;Git作为核心版本控制工具扮演着不可或缺的角色。作为当今最广泛使用的分布式版本控制系统&#xff0c;Git为开发者提供了强大的源码管理能力。通过Git&#xff0c;您可以轻松追踪代码变更、管理不同版本&#xff0c;并与其他开发…

C#版使用融合通信API发送手机短信息

目录 功能实现 范例运行环境 实现范例 类设计 类代码实现 调用范例 总结 功能实现 融合云通信服务平台&#xff0c;为企业提供全方位通信服务&#xff0c;发送手机短信是其一项核心功能&#xff0c;本文将讲述如何使用融合云服务API为终端手机用户发送短信信息&#xf…

Linux基础—ssh和nfs

ssh远程管理 s secure s shell&#xff1a;加密的安全通信协议 1、实现字符串界面的远程登陆 2、远程复制 3、sftp&#xff1a;加密的文件传输协议 4、免密登陆&#xff08;密钥对实现远程登陆&#xff09; 实验 字符串界面的远程登陆 22端口 roottest1-2:/opt/sun1# s…

Day43 | 动态规划 :状态机DP 买卖股票的最佳时机买卖股票的最佳时机II

Day43 | 动态规划 &#xff1a;状态机DP 买卖股票的最佳时机&&买卖股票的最佳时机II 动态规划应该如何学习&#xff1f;-CSDN博客 本次题解参考自灵神的做法&#xff0c;大家也多多支持灵神的题解 买卖股票的最佳时机【基础算法精讲 21】_哔哩哔哩_bilibili 动态规…