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) SEE ALSO Future::Mojo, Future