Hi,

I'm trying to run an AJAX call that needs to check an external API queue 
for a response every second, then generate a chart based on that data using 
JSON.

The code sample from the module I'm using to connect to the API suggests 
using a for...sleep loop, however clearly this doesn't work with 
Mojolicious. 

I've tried several different permutations of using a recurring loop with 
varying degrees of success, but just can't get it to work - latest example 
below. This example never exits, even when there is data returned. 

I'm aware that the $success parameter is probably not helping the 
situation, but would really appreciate any guidance on where to go next to 
stop the loop once a successful response has been received, and render a 
JSON response.

my $success = 0;
my $id = Mojo::IOLoop->recurring(
    1 => sub {
        $self->finish if $success == 1;
        if (my $results = $sc_api->check_queue($report_id)) {
            my $rows = $sc_api->process_os($results);
            $log->info(Dumper($rows));
            &_insert_data({domain => $domain, path => $path, data => {os => 
$rows}});
            $success = 1;
         }
    }
);

# need to wait
$self->on(finish => sub {
    # remove ioloop
    Mojo::IOLoop->remove($id);

    my $db = $self->db;
    my $analytics = $db->get_collection('analytics');
    my $rows = $analytics->find({id => $url});
    my $doc = $rows->next;
    $self->render(json => $doc->{'analytics'}->{'os'});
});


-- 
You received this message because you are subscribed to the Google Groups 
"Mojolicious" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.

Reply via email to