DataLoader
view release on metacpan or search on metacpan
lib/DataLoader.pm view on Meta::CPAN
if (@{$self->{queue}} == 1) {
if ($self->{do_batch}) {
# Schedule next tick, to allow all batch calls this frame to be batched
# together.
# We prefer an idle watcher as it will execute after all Promises are
# resolved (batching as much as possible). But Mojo::IOLoop's API does
# not provide this. And we cannot assume AnyEvent can be used.
# The best we can do is detect the EV backend and use EV::idle.
if (Mojo::IOLoop->singleton->reactor->isa('Mojo::Reactor::EV')) {
# Capture the lexical inside the coderef to keep it alive until
# the callback is finished.
my $w; $w = EV::idle(sub {
$self->_dispatch_queue;
undef $w;
});
}
else {
# We fall back to next_tick, which is less efficient.
Mojo::IOLoop->next_tick(sub { $self->_dispatch_queue });
}
( run in 1.273 second using v1.01-cache-2.11-cpan-39bf76dae61 )