Async-Template

 view release on metacpan or  search on metacpan

README.md  view on Meta::CPAN



    # nonblocked multiple procesess

    my $cv = AnyEvent->condvar;
    $cv->begin;
    my $tt2 = Async::Template->new({
       DONE => sub{ my $output = shift; $cv->end; },
    }) || die Async::Template->error();
    $cv->begin;
    AnyEvent->timer(after => 10, cb => sub { $cv->end; });
    $cv->recv


    # usage in perl code for async processes

    my $vars = {
      some_async_fn => sub {
         my ($param, $callback) = @_;
         $callback->(error, result);
      },

lib/Async/Template.pm  view on Meta::CPAN



   # nonblocked multiple procesess

   my $cv = AnyEvent->condvar;
   $cv->begin;
   my $tt2 = Async::Template->new({
      DONE => sub{ my $output = shift; $cv->end; },
   }) || die Async::Template->error();
   $cv->begin;
   AnyEvent->timer(after => 10, cb => sub { $cv->end; });
   $cv->recv


   # usage in perl code for async processes

   my $vars = {
     some_async_fn => sub {
        my ($param, $callback) = @_;
        $callback->(error, result);
     },

t/lib/Template/Plugin/Second.pm  view on Meta::CPAN

   $value = 'ok' if 2 == scalar @_;

   # notify system with error message if somthing wrong
   if ( $second < 0 ) {
      $cb->( { error => "second($second) is must be positive" } );
      return;
   }

   my $started_at = now;

   my $on_timer; $on_timer = sub {
      # workaround timer cb called too earlier
      my $remaining = $second - (now() - $started_at);
      if( $remaining > 0 ) {
        $self->{tm} = AE::timer $remaining, 0, $on_timer;
        return;
      }

      # notify system that event done with result any data at param
      $cb->( { result => $value } );
   };

   # start the event with specific on_event handler
   $self->{tm} = AE::timer $second, 0, $on_timer;
}

1;



( run in 1.019 second using v1.01-cache-2.11-cpan-49f99fa48dc )