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 方式,代码更清晰易读,错误处理也更方便。

回到顶部