In this case you need to disable automatic rendering by calling method render_later from the controller. (http://mojolicio.us/perldoc/Mojolicious/Controller#render_later)
Just add the next string to search controller:
$self->render_later;
Complete example:
#!/usr/bin/perl -wl
use Mojolicious::Lite;
get '/' => sub {
my $self = shift;
$self->render_later;
my $delay = Mojo::IOLoop->delay(sub {
$self->app->log->debug('Delay finished!');
$self->render(text => 'test!');
});
for my $i (0 .. 5) {
my $end = $delay->begin;
Mojo::IOLoop->timer($i => sub {
$self->app->log->debug($i);
$end->();
});
}
};
app->start;