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