NAME
Mojolicious::Plugin::Future - use Future in Mojolicious applications
SYNOPSIS
use Mojolicious::Lite;
plugin 'Future';
use Scalar::Util 'weaken';
use Mojo::UserAgent;
my $ua = Mojo::UserAgent->new;
get '/async_callback' => sub {
my $c = shift;
my $f = $c->future;
weaken(my $weak_f = $f); # only close over weakened Future
$ua->get('http://example.com', sub {
my ($ua, $tx) = @_;
$tx->success ? $weak_f->done($tx->result) : $weak_f->fail($tx->error->{message});
});
$c->adopt_future($f->on_done(sub {
my ($result) = @_;
$c->render(json => {result => $result->text});
}));
};
get '/future_returning' => sub {
my $c = shift;
$c->adopt_future(returns_a_future()->then(sub {
my @result = @_;
return returns_another_future(@result);
})->on_done(sub {
my @result = @_;
$c->render(json => {result => \@result});
}));
};
DESCRIPTION
Mojolicious::Plugin::Future is a convenient way to use Future in a Mojolicious application. The final future in a sequence or convergence is passed to the "adopt_future" helper, which takes care of the details of asynchronous rendering in a similar fashion to "delay" in Mojolicious::Plugin::DefaultHelpers.
HELPERS
adopt_future
$f = $c->adopt_future($f);
Disables automatic rendering, stores the Future instance, keeps a reference to "tx" in Mojolicious::Controller in case the underlying connection gets closed early, and calls "reply->exception" in Mojolicious::Plugin::DefaultHelpers if the Future fails.
future
my $f = $c->future;
my $f = $c->future($loop);
Convenience method to return a new Future::Mojo object.
METHODS
Mojolicious::Plugin::Future inherits all methods from Mojolicious::Plugin and implements the following new ones.
register
$plugin->register(Mojolicious->new);
Register helper in Mojolicious application.
BUGS
Report any issues on the public bugtracker.
AUTHOR
Dan Book <dbook@cpan.org>
COPYRIGHT AND LICENSE
This software is Copyright (c) 2017 by Dan Book.
This is free software, licensed under:
The Artistic License 2.0 (GPL Compatible)