Для исключения вложенности есть AnyEvent::Delay и AnyEvent::Delay::Simple.
20 ноября 2013 г., 21:25 пользователь Maxim <[email protected]> написал: > С точки зрения стилистики программизма на АЕ было бы правильнее писать > тот же функционал (последовательное выполнение двух действий) примерно > так: > > use AnyEvent; > > my $cv = AE::cv; > > my ($t1, $t2); > $t1 = AE::timer 1, 0, sub { > warn "1st timer fired"; > undef $t1; > $t2= AE::timer (1, 0, sub { > undef $t2; > warn "2nd timer fired"; > $cv->send; > }); > }; > > $cv->recv; > > Или, во избежание вложенности, так > > use AnyEvent; > > my $cv = AE::cv; > > my ($t1, $t2); > my $fired2; $fired2=sub { > undef $t2; > warn "2nd timer fired"; > $cv->send; > }; > my $fired1;$fired1= sub { > warn "1st timer fired"; > undef $t1; > $t2= AE::timer 1, 0, $fired2; > }; > > $t1 = AE::timer 1, 0, $fired1; > > $cv->recv; > -- Денис Ибаев -- Moscow.pm mailing list [email protected] | http://moscow.pm.org
