join<T> static method
Null safety
- List<
CompletableIsolate< completableIsolateT> >
等待所有任务完成
Implementation
static Future<List<CompletableIsolate<T>>> join<T>(
List<CompletableIsolate<T>> completableIsolate) async {
Completer<List<CompletableIsolate<T>>> completer = Completer();
if (completableIsolate.isEmpty) {
completer.complete();
}
int count = completableIsolate.length;
List<int> ids = [];
for (var f in completableIsolate) {
void sub() {
if (!ids.contains(f.hashCode)) {
ids.add(f.hashCode);
count--;
if (count == 0) {
completer.complete(completableIsolate);
}
}
}
f.whenComplete(sub);
f.onCancel(sub);
}
return completer.future;
}