2
0
mirror of https://github.com/esiur/esiur-dart.git synced 2025-09-29 18:53:19 +00:00
This commit is contained in:
2021-07-21 12:18:01 +03:00
parent 737397da11
commit 6be04c39ed
27 changed files with 659 additions and 513 deletions

View File

@@ -1,14 +1,16 @@
import 'AsyncReply.dart';
import '../Resource/Warehouse.dart';
class AsyncBag<T> extends AsyncReply<List<T>> {
List<AsyncReply<T>> _replies = new List<AsyncReply<T>>();
List<AsyncReply<T>> _replies = <AsyncReply<T>>[];
List<T> _results = <T>[];
int _count = 0;
bool _sealedBag = false;
Type arrayType;
seal() {
//print("SEALED");
@@ -16,7 +18,7 @@ class AsyncBag<T> extends AsyncReply<List<T>> {
_sealedBag = true;
if (_results.length == 0) trigger(new List<T>());
if (_results.length == 0) trigger(<T>[]);
for (var i = 0; i < _results.length; i++) {
var k = _replies[i];
@@ -25,8 +27,15 @@ class AsyncBag<T> extends AsyncReply<List<T>> {
k.then<dynamic>((r) {
_results[index] = r;
_count++;
//print("Seal ${_count}/${_results.length}");
if (_count == _results.length) trigger(_results);
if (_count == _results.length) {
if (arrayType != null) {
var ar = Warehouse.createArray(arrayType);
_results.forEach(ar.add);
trigger(ar);
} else {
trigger(_results);
}
}
}).error((ex) {
triggerError(ex);
});

View File

@@ -3,7 +3,7 @@ library esiur;
import 'AsyncReply.dart';
class AsyncQueue<T> extends AsyncReply<T> {
List<AsyncReply<T>> _list = new List<AsyncReply<T>>();
List<AsyncReply<T>> _list = <AsyncReply<T>>[];
// object queueLock = new object();

View File

@@ -27,17 +27,16 @@ import 'AsyncException.dart';
import 'ProgressType.dart';
class AsyncReply<T> implements Future<T> {
List<Function(T)> _callbacks = new List<Function(T)>();
List<Function(T)> _callbacks = <Function(T)>[];
T _result;
List<Function(AsyncException)> _errorCallbacks =
new List<Function(AsyncException)>();
List<Function(AsyncException)> _errorCallbacks = <Function(AsyncException)>[];
List<Function(ProgressType, int, int)> _progressCallbacks =
new List<Function(ProgressType, int, int)>();
<Function(ProgressType, int, int)>[];
List<Function(T)> _chunkCallbacks = new List<Function(T)>();
List<Function(T)> _chunkCallbacks = <Function(T)>[];
bool _resultReady = false;
AsyncException _exception;