Flutter:异步多线程结合

示例一

js 复制代码
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去除,则会打印

因为

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

示例二

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


异步任务1x.then 是一个整体,所以先执行,后执行微任务1

示例三

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

如果是同级的情况下,微任务>事件队列,微任务先执行,后执行事件队列中的异步

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

js 复制代码
return GestureDetector(
	 onTap: () {
	 	compute(func, 123);
	 },
)
func(){
	for(int i = 0;i<10000000;i++){}
}
相关推荐
键盘鼓手苏苏14 小时前
Flutter 三方库 p2plib 的鸿蒙化适配指南 - 实现高性能的端到端(P2P)加密通讯、支持分布式节点发现与去中心化数据流传输实战
flutter·harmonyos·鸿蒙·openharmony
加农炮手Jinx14 小时前
Flutter for OpenHarmony:postgrest 直接访问 PostgreSQL 数据库的 RESTful 客户端(Supabase 核心驱动) 深度解析与鸿蒙适配指南
数据库·flutter·华为·postgresql·restful·harmonyos·鸿蒙
加农炮手Jinx14 小时前
Flutter 组件 heart 适配鸿蒙 HarmonyOS 实战:分布式心跳监控,构建全场景保活检测与链路哨兵架构
flutter·harmonyos·鸿蒙·openharmony
钛态14 小时前
Flutter 三方库 http_mock_adapter — 赋能鸿蒙应用开发的高效率网络接口 Mock 与自动化测试注入引擎(适配鸿蒙 HarmonyOS Next ohos)
android·网络协议·flutter·http·华为·中间件·harmonyos
王码码203514 小时前
Flutter for OpenHarmony:Flutter 三方库 algoliasearch 毫秒级云端搜索体验(云原生搜索引擎)
android·前端·git·flutter·搜索引擎·云原生·harmonyos
王码码203514 小时前
Flutter 三方库 dns_client 的鸿蒙化适配指南 - 告别 DNS 劫持、探索 DNS-over-HTTPS (DoH) 技术、构建安全的鸿蒙网络请求环境
flutter·harmonyos·鸿蒙·openharmony·dns_client
键盘鼓手苏苏14 小时前
Flutter 组件 highlighter 适配鸿蒙 HarmonyOS 实战:高性能语法高亮,构建大规模代码分析与文本染色架构
flutter·harmonyos·鸿蒙·openharmony
国医中兴14 小时前
Flutter 三方库 langchain_google 的鸿蒙化适配指南 - 链接 Gemini 智慧中枢、LangChain AI 实战、鸿蒙级智能应用专家
flutter·langchain·harmonyos
左手厨刀右手茼蒿14 小时前
Flutter for OpenHarmony: Flutter 三方库 shamsi_date 助力鸿蒙应用精准适配波斯历法(中东出海必备)
android·flutter·ui·华为·自动化·harmonyos
雷帝木木14 小时前
Flutter 三方库 http_client_interceptor 的鸿蒙化适配指南 - 实现原生 HttpClient 的全量请求拦截、支持端侧动态 Headers 注入与网络流量审计实战
flutter·harmonyos·鸿蒙·openharmony·http_client_interceptor