AnyEvent-Future

 view release on metacpan or  search on metacpan

README  view on Meta::CPAN

SYNOPSIS

       use AnyEvent;
       use AnyEvent::Future;
    
       my $future = AnyEvent::Future->new;
    
       some_async_function( ..., cb => sub { $future->done( @_ ) } );
    
       print Future->wait_any(
          $future,
          AnyEvent::Future->new_timeout( after => 10 ),
       )->get;

    Or

       use AnyEvent::Future qw( as_future_cb );
    
       print Future->wait_any(
          as_future_cb {
             some_async_function( ..., cb => shift )
          },
          AnyEvent::Future->new_timeout( after => 10 ),
       )->get;

DESCRIPTION

    This subclass of Future integrates with AnyEvent, allowing the await
    method to block until the future is ready. It allows AnyEvent-using
    code to be written that returns Future instances, so that it can make
    full use of Future's abilities, including Future::Utils, and also that
    modules using it can provide a Future-based asynchronous interface of
    their own.

    For a full description on how to use Futures, see the Future
    documentation.

CONSTRUCTORS

 new

       $f = AnyEvent::Future->new

    Returns a new leaf future instance, which will allow waiting for its
    result to be made available, using the await method.

 new_delay

       $f = AnyEvent::Future->new_delay( @args )

 new_timeout

       $f = AnyEvent::Future->new_timeout( @args )

    Returns a new leaf future instance that will become ready at the time
    given by the arguments, which will be passed to the AnyEvent->timer
    method.

    new_delay returns a future that will complete successfully at the
    alotted time, whereas new_timeout returns a future that will fail with
    the message Timeout. This is provided as a simple utility for small
    use-cases; for a more find-grained control over the failure message and
    additional values you may wish to use new_delay combined with the
    then_fail method:

       new_delay( after => 10 )
          ->then_fail( "The operation timed out after 10 seconds", timeout => );

 from_cv

       $f = AnyEvent::Future->from_cv( $cv )

    Returns a new leaf future instance that will become ready when the
    given AnyEvent::CondVar instance is ready. The success or failure
    result of the future will be the result passed to the condvar's send or
    croak method.

METHODS

 as_cv

       $cv = $f->as_cv

    Returns a new AnyEvent::CondVar instance that wraps the given future;
    it will complete with success or failure when the future does.

    Note that because AnyEvent::CondVar->croak takes only a single string
    message for the argument, any subsequent failure detail values from the
    future are lost by the condvar. To capture these as well, you may wish
    to use an on_fail callback or the failure method, to obtain them.

UTILITY FUNCTIONS

    The following utility functions are exported as a convenience.

 as_future

       $f = as_future { CODE }

    Returns a new leaf future instance, which is also passed in to the
    block of code. The code is called in scalar context, and its return
    value is stored on the future. This will be deleted if the future is
    cancelled.

       $w = CODE->( $f )

    This utility is provided for the common case of wanting to wrap an
    AnyEvent function which will want to receive a callback function to
    inform of completion, and which will return a watcher object reference
    that needs to be stored somewhere.

 as_future_cb

       $f = as_future_cb { CODE }

    A futher shortcut to as_future, where the code is passed two callback
    functions for done and fail directly, avoiding boilerplate in the
    common case for creating these closures capturing the future variable.
    In many cases this can reduce the code block to a single line.

     $w = CODE->( $done_cb, $fail_cb )

 view all matches for this distribution
 view release on metacpan -  search on metacpan

( run in 0.555 second using v1.00-cache-2.02-grep-82fe00e-cpan-2c419f77a38b )