NAME
Mojolicious::Plugin::Future - use Future in Mojolicious applications
SYNOPSIS
use
Mojolicious::Lite;
plugin
'Future'
;
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
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)