当前位置: 首页 > article >正文

Future.forEach异步遍历列表,Future.doWhile实现了一个无限循环,直到满足某个条件才停止

Future.doWhile实现了一个无限循环,直到满足某个条件才停止。

void main() async {  
  print("开始");  
  // 声明一个整型变量value,并初始化为0  
  var value = 0;  
  
  // 创建一个Future对象,使用Future.doWhile方法。这个方法会重复执行指定的函数,  
  // 直到函数返回false。这里我们使用了一个匿名函数作为参数,这个函数是异步的。  
  // await Future.doWhile(() => null);  
  await Future.doWhile(  
          () async {  
        value++;// 在每次循环中,value都会加1  
        await Future.delayed(const Duration(seconds: 1));// 使用Future.delayed方法来延迟1秒钟,这样每次循环之间会有1秒钟的间隔  
        print(value);  
        // 检查value是否等于3,如果是,就打印一条消息并返回false,结束循环。  
        if (value == 3) {print('Finished with $value');return false;}  
  
        return true;// 如果value不等于3,就返回true,继续循环。  
      });  
  print("结束");  
}
I/flutter (25259): 开始
I/flutter (25259): 1
I/flutter (25259): 2
I/flutter (25259): 3
I/flutter (25259): Finished with 3
I/flutter (25259): 结束

Future.forEach异步遍历列表

// 导入'dart:async'库,这个库提供了异步编程的功能。  
import 'dart:async';  
  
// 定义一个异步函数'someAsnyc',它会返回一个Future<int>对象。  
Future<int> someAsnyc() async {  
  await Future.delayed(Duration(milliseconds:300));// 延迟300毫秒(即0.3秒)后执行下面的代码。这里只是简单地模拟一个异步操作。  
  return 5;// 返回一个整数5。这里只是简单地返回一个固定的值,实际应用中可以根据实际需求返回不同的值。  
}  

// 定义主函数,Dart程序的入口点。  
void main() async {  
  print("开始");  
  List<int> _lists = [1,2,3,4,5,6];// 创建一个包含整数的列表'_lists',其中包含数字1到6。  
  List<int> _output = [];// 创建一个空列表'_output',用于存储处理后的结果。  
  
  // 使用Future.forEach函数来遍历'_lists'列表中的每个元素。这个函数会并行处理列表中的每个元素。  
  await Future.forEach(_lists, (value) async {  
    int c = await someAsnyc() +value;// 对每个元素调用'someAsnyc'函数,这个函数会返回一个Future<int>对象。然后再进行加法运算  
    print(c);// 打印返回的Future<int>对象。这里只是简单地打印出来,实际应用中可以根据返回的结果做相应的处理。  
    _output.add(c);// 将返回的Future<int>对象添加到'_output'列表中。  
  });  
  
  // 打印'_output'列表。打印结果会显示所有处理后的结果。  
  print(_output);  
  print("结束");  
}
I/flutter (25259): 开始
I/flutter (25259): 6
I/flutter (25259): 7
I/flutter (25259): 8
I/flutter (25259): 9
I/flutter (25259): 10
I/flutter (25259): 11
I/flutter (25259): [6, 7, 8, 9, 10, 11]
I/flutter (25259): 结束

http://www.kler.cn/a/156631.html

相关文章:

  • 【计算机网络】TCP网络程序
  • #include<string>和#include<string.h>有什么区别
  • Java面向对象高级2
  • jmeter介绍、使用方法、性能测试、现参数化和数据驱动、分布式测试、压力测试、接口测试
  • UVC 输出视频格式修改和windows下数据分析
  • Unity3D实现视频和模型融合效果
  • CGE模型应用
  • 【华为OD题库-058】矩阵中非1的元素个数-java
  • 知识点滴 - 什么是半透膜和渗透压
  • 计算机网络:传输层——多路复用与解复用
  • 十、FreeRTOS之FreeRTOS时间片调度
  • 实现简单的Spring
  • thinkphp6出现 htmlentities() expects parameter 1 to be string, array given
  • 金融帝国实验室(Capitalism Lab)官方正版游戏『2023双12特卖』
  • 微信小程序uni.chooseImage()无效解决方案
  • C#/.NET/.NET Core优秀项目和框架2023年11月简报
  • prometheus部署及与grafana结合应用
  • 使用射线单击物体显示,点击物体隐藏
  • LD_PRELOAD劫持、ngixn临时文件、无需临时文件rce
  • 人机交互——言语信息表示模型
  • NetApp EF 系列全闪存存储,为实时分析、HPC 和数据库等性能敏感型工作负载提供助力
  • 数字孪生3D场景开发工具:弥补不足,开拓全新可能
  • Linux入门攻坚——7、磁盘管理——文件系统挂载管理及RAID、LVM
  • 学生犯错误老师应该怎么教育
  • colab notebook导出为PDF
  • C语言图书管理系统的代码,包括图书录入、查询、插入、修改和删除功能。