AnyEvent-Promises
view release on metacpan or search on metacpan
lib/AnyEvent/Promises.pm view on Meta::CPAN
my $d = deferred();
my $left = @promises;
my $cb = sub { --$left or $d->resolve(@promises); };
$_->then( $cb, $cb ) for @promises;
return $d->promise;
}
1;
# vim: expandtab:shiftwidth=4:tabstop=4:softtabstop=0:textwidth=78:
__END__
=pod
=head1 NAME
AnyEvent::Promises - simple implementation of Promises/A+ spec
=head1 VERSION
lib/AnyEvent/Promises/Deferred.pm view on Meta::CPAN
elsif ($rejected) {
$d->reject($reason);
}
else {
$d->resolve(@$value);
}
}
1;
# vim: expandtab:shiftwidth=4:tabstop=4:softtabstop=0:textwidth=78:
__END__
=pod
=head1 NAME
AnyEvent::Promises::Deferred - deferred and promises objects
=head1 VERSION
t/01-basic.t view on Meta::CPAN
subtest 'Promise on rejected' => sub {
is( $p2->state, 'rejected' );
ok( !$p2->is_pending );
ok( !$p2->is_fulfilled );
ok( $p2->is_rejected );
is( $p2->reason, 'doomed' );
};
done_testing();
# vim: expandtab:shiftwidth=4:tabstop=4:softtabstop=0:textwidth=78:
t/02-then.t view on Meta::CPAN
};
ok( $pp->is_fulfilled );
is_deeply( \@track, [ 'A', 'pending' ] );
is( $dd->promise->value, 'B' );
is( $pp->value, 'B' );
};
done_testing();
# vim: expandtab:shiftwidth=4:tabstop=4:softtabstop=0:textwidth=78:
t/04-merge.t view on Meta::CPAN
my $values;
run_event_loop {
my $cv = shift;
merge_promises()->then(sub { $values = [@_]; $cv->send});
};
is_deeply($values, [], 'merge_promises() returns resolved promise');
};
done_testing();
# vim: expandtab:shiftwidth=4:tabstop=4:softtabstop=0:textwidth=78:
t/05-sync.t view on Meta::CPAN
$p[1]->then(undef, sub { $cv->send });
};
is_deeply( \@progress,
[ 0 => 'pending', 2 => 'rejected', 1 => 'rejected', ['oops'], ] );
$merged->then(sub { push @progress, [ @_ ]; });
};
done_testing();
# vim: expandtab:shiftwidth=4:tabstop=4:softtabstop=0:textwidth=78:
$tmer
= AE::timer( $timeout, 0, sub { undef $tmer; $cv->send('TIMEOUT') } );
$code->($cv);
$cv->recv;
return $tmer ? 1: fail("Event loop failed");
}
1;
# vim: expandtab:shiftwidth=4:tabstop=4:softtabstop=0:textwidth=78:
( run in 1.166 second using v1.01-cache-2.11-cpan-5b529ec07f3 )