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): 结束