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++){}
}
相关推荐
不爱吃糖的程序媛10 小时前
Flutter 与 OpenHarmony 通信:Flutter Channel 使用指南
前端·javascript·flutter
用户661166552965213 小时前
Futter3 仿抖音我的页面or用户详情页
flutter
Haha_bj13 小时前
Flutter ——device_info_plus详解
android·flutter·ios
前端小伙计13 小时前
Android/Flutter 项目统一构建配置最佳实践
android·flutter
微祎_14 小时前
Flutter for OpenHarmony:形状拼图游戏开发全指南 - 基于Flutter CustomPaint的可拖拽矢量拼图实现与设计理念
flutter
不爱吃糖的程序媛15 小时前
解锁Flutter鸿蒙开发新姿势——flutter_ohfeatures插件集实战指南
flutter
一只大侠的侠15 小时前
React Native开源鸿蒙跨平台训练营 Day16自定义 useForm 高性能验证
flutter·开源·harmonyos
子春一15 小时前
Flutter for OpenHarmony:绿氧 - 基于Flutter的呼吸训练应用开发实践与身心交互设计
flutter·交互
ujainu15 小时前
告别杂乱!Flutter + OpenHarmony 鸿蒙记事本的标签与分类管理(三)
android·flutter·openharmony
ZH154558913116 小时前
Flutter for OpenHarmony Python学习助手实战:API接口开发的实现
python·学习·flutter