2
0
mirror of https://github.com/esiur/esiur-dart.git synced 2026-04-04 10:18:20 +00:00

Refactor Core

This commit is contained in:
Mohammed Salman
2019-08-31 16:52:05 +03:00
parent 0ff70efde8
commit 57c8fc903d
10 changed files with 245 additions and 355 deletions

View File

@@ -1,52 +1,46 @@
import 'AsyncReply.dart';
class AsyncBag<T> extends AsyncReply<List<T>>
{
class AsyncBag<T> extends AsyncReply<List<T>> {
List<AsyncReply<T>> _replies = List<AsyncReply<T>>();
List<T> _results = List<T>();
List<AsyncReply<T>> _replies = new List<AsyncReply<T>>();
List<T> _results = new List<T>();
int _count = 0;
bool _sealedBag = false;
int _count = 0;
bool _sealedBag = false;
seal() {
if (_sealedBag) {
return;
}
_sealedBag = true;
seal()
{
if (_sealedBag)
return;
if (_results.length == 0) {
trigger(List<T>());
}
_sealedBag = true;
for (var i = 0; i < _results.length; i++) {
var k = _replies[i];
var index = i;
if (_results.length == 0)
trigger(new List<T>());
for (var i = 0; i < _results.length; i++)
{
var k = _replies[i];
var index = i;
k.then((r)
{
_results[index] = r;
_count++;
if (_count == _results.length)
trigger(_results);
});
k.then((r) {
_results[index] = r;
_count++;
if (_count == _results.length) {
trigger(_results);
}
});
}
}
add(AsyncReply<T> reply)
{
if (!_sealedBag)
{
_results.add(null);
_replies.add(reply);
}
add(AsyncReply<T> reply) {
if (!_sealedBag) {
_results.add(null);
_replies.add(reply);
}
}
addBag(AsyncBag<T> bag)
{
bag._replies.forEach((r) {
add(r);
});
}
addBag(AsyncBag<T> bag) {
bag._replies.forEach((r) {
add(r);
});
}
}