EE
Size: a a a
EE
Т
ДЩ
ДЩ
ДЩ
ДЩ
AP
D
D
KK
DK
void main() {
var z = SomeShitQueue(callback);
filler(z);
}
void filler(SomeShitQueue z){
for(int i = 9; i>0; i--){
z.add(i);
}
}
Future callback(int data)async{
await Future.delayed(Duration(seconds:data));
print(data);
}
typedef FutureFunction = Future Function(int);
class SomeShitQueue{
SomeShitQueue(this.callback);
final FutureFunction callback;
List<int> queue =[];
bool semafor = false;
void add(dynamic data){
queue.add(data);
_checkNeedToExecution();
}
void _checkNeedToExecution(){
if(queue.isNotEmpty){
_execute();
}
}
void _execute()async{
if(!semafor){
semafor = true;
var element = queue.first;
queue.removeAt(0);
await callback(element);
semafor = false;
_checkNeedToExecution();
}
}
}
EA
DK
SL
MI
MI
MI
Ю
TD