可用场景
1.多文件上传(后端不友好情况下)
2.蓝牙打印机多张打印
3.for循环中需要按照顺序执行的场景等
import 'dart:async';
void main() {
PrintManager.initData();
PrintManager.doActionTask();
}
class PrintManager {
Completer<String> _completer;
static PrintManager manager;
static initData() {
if (manager == null) {
manager = PrintManager();
}
}
//开始做任务
static Future<void> doActionTask() async {
for(int i = 0; i < 10; i++) {
print('进入循环第${i} 个');
await manager.printe();
}
}
//打印任务
Future<String> printe() async {
_completer = Completer<String>();
await sendMessage();
print('在等待中');
callBack();
return _completer.future;
}
//发送消息数据进行打印
void sendMessage() async {
await Future(() {
print('耗时任务,挂起来, 发送消息了 async');
});
}
//回调
static void callBack() {
if (manager._completer?.isCompleted == false) {
print('啊 我回调了, 可以执行下一个了');
manager._completer.complete('xixi');
}
}
}