hi, guys,
Been reading up
https://docs.mojolicious.org/Mojo/IOLoop/Delay
https://docs.mojolicious.org/Mojolicious/Guides/Cookbook
and a few threads in the group.
Apologies if i had missed this in advance but with Mojo::IOLoop's delay,
timer, and recurring, can I use them in a promises's "then" clause?
I am trying to do that to no avail.
For example, in the following code snippet, the test runs very quickly
and doesn't delay at all.
*Output:*
[16:50:12] anexiole:server git:(bugfix/ET750-asyncTests*) $ prove -v
t/api/fwm/job/up.t
t/api/fwm/job/up.t ..
[info] Setting log level to: debug
[info] Manager started: MG EMU: Mojo::Server::Daemon
[info] Worker started: MG EMU: [27346]
[info] Manager started: MG EMU: Mojo::Server::Daemon
[info] Worker started: MG EMU: [27346]
Current port of t is 50016
RESULTS : $VAR1 = '{"jobId":2530,"task":"upgrade"}';
job id is 2530
Get the job out ...
IOLOoP is active
After the ioloop...
1..0
skipped: (no reason given)
*Snippet:*
my $data = from_json( $test_scenario->{contents}->{data} );
my $enqueue_job = Mojo::URL->new($url);
$enqueue_job->query(
Mojo::Parameters->new(
'format' =>
$test_scenario->{'contents'}->{'format'},
'scope' => $scope,
'deviceType' => $data->{'deviceType'},
'data' => $test_scenario->{'contents'}->{'data'},
)
);
print STDERR qq{ Current port of t is }
. $t->ua->server->url->port . qq{\n};
$t->ua->post_p( $enqueue_job => $header )->then(
sub ($tx) {
print STDERR qq{ RESULTS : }
. Dumper( $tx->result->body );
my $job_id = from_json( $tx->result->body )->{'jobId'};
print STDERR qq{job id is $job_id\n};
# Grab the report of the job out
my $retrieve_enqueued_job_url
=
Mojo::URL->new(qq{/myTestApp/api/job/v12/result/$job_id});
$retrieve_enqueued_job_url->query(
Mojo::Parameters->new( 'format' => q{json}, ),
);
print STDERR qq{Get the job out ...\n};
if ( $t->ua->ioloop->is_running() ) {
print STDERR qq{IOLOoP is active\n};
}
else {
print STDERR qq{IOLOoP is not active\n};
}
*use Mojo::IOLoop::Delay;*
* my $delay = Mojo::IOLoop->delay(*
* sub ($delay) {*
* Mojo::IOLoop->timer( 3 => $delay->begin );*
* },*
* sub ($delay) {*
* print STDERR '3 seconds';*
* Mojo::IOLoop->timer( 3 => $delay->begin );*
* },*
* sub ($delay) {*
* print STDERR '6 seconds';*
* Mojo::IOLoop->timer( 3 => $delay->begin );*
* },*
* sub ($delay) { print STDERR '9 seconds'; }*
* );*
* $delay->wait;*
$t->ua->get_p( $retrieve_enqueued_job_url => $header
)->then(
sub ($tx) {
print STDERR qq{ the job RESULTS : }
. Dumper( $tx->result->body );
}
);
print STDERR qq{After the ioloop...\n};
}
)->catch(
sub (@errors) {
print STDERR qq{Job retrieval errors: } .
Dumper(@errors);
}
)->wait;
}
Thank you
Gordon Yeong.
--
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 view this discussion on the web visit
https://groups.google.com/d/msgid/mojolicious/edfc52f0-bc7d-484c-91fa-1d64c10be9a9n%40googlegroups.com.