Flutter如何实现链式任务执行
在Flutter中如何实现链式任务执行?比如有多个异步任务需要按顺序执行,每个任务依赖前一个任务的结果,类似Promise的then链式调用。有没有推荐的实现方式或第三方库?最好能提供简单易懂的代码示例。
2 回复
在Flutter中,使用Future实现链式任务执行。通过.then()方法串联多个异步任务,确保任务按顺序执行。例如:
task1()
.then((result) => task2(result))
.then((result) => task3(result))
.catchError(handleError);
每个任务完成后,结果传递给下一个任务,错误统一处理。
更多关于Flutter如何实现链式任务执行的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中实现链式任务执行,可以通过以下几种方式:
1. 使用 Future.then() 链式调用
Future<void> executeChainTasks() async {
await task1()
.then((result1) => task2(result1))
.then((result2) => task3(result2))
.then((result3) => task4(result3))
.catchError((error) {
print('任务执行出错: $error');
});
}
Future<String> task1() async {
await Future.delayed(Duration(seconds: 1));
print('任务1完成');
return 'task1_result';
}
Future<String> task2(String input) async {
await Future.delayed(Duration(seconds: 1));
print('任务2完成,输入: $input');
return 'task2_result';
}
2. 使用 async/await 语法
Future<void> executeChainTasks() async {
try {
final result1 = await task1();
final result2 = await task2(result1);
final result3 = await task3(result2);
final result4 = await task4(result3);
print('所有任务完成');
} catch (e) {
print('任务执行出错: $e');
}
}
3. 使用 Completer 自定义链式
class TaskChain {
final List<Future Function()> _tasks = [];
TaskChain then(Future Function() task) {
_tasks.add(task);
return this;
}
Future<void> execute() async {
for (final task in _tasks) {
await task();
}
}
}
// 使用示例
TaskChain()
.then(() => task1())
.then(() => task2())
.then(() => task3())
.execute();
4. 使用第三方库(如 async)
// 在 pubspec.yaml 添加: async: ^2.8.0
import 'package:async/async.dart';
Future<void> executeWithAsync() async {
final queue = StreamQueue(Stream.fromIterable([1, 2, 3, 4]));
while (await queue.hasNext) {
await processItem(await queue.next);
}
}
推荐使用 async/await 方式,代码更清晰易读,错误处理也更方便。

