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: 


t/Utils.pm  view on Meta::CPAN

    $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 )