use Mojo::Base -strict, -signatures;
use Mojo::IOLoop;
Mojo::IOLoop->next_tick(sub ($loop) {
say time-$^T, "s Loop PID is $$";
for my $i (0..1) {
say time-$^T, "s Start of loop $i";
$loop->subprocess->run_p(
sub ($j) {
say time-$^T,
"s Hello, from loop $i (arg $j) in PID $$!";
sleep 2;
say time-$^T, "s Good bye, from PID $$!";
return "Return value of $i";
}->($i)
)->then(sub ($result) {
say time-$^T, "s Result from loop $i: $result";
})->catch(sub ($err) {
say time-$^T, "s Subprocess error: $err";
});
say time-$^T, "s End of loop $i";
}
});
Mojo::IOLoop->start;
####
0s Loop PID is 8353
0s Start of loop 0
0s Hello, from loop 0 (arg 0) in PID 8353!
2s Good bye, from PID 8353!
2s End of loop 0
2s Start of loop 1
2s Hello, from loop 1 (arg 1) in PID 8353!
4s Good bye, from PID 8353!
4s End of loop 1
4s Subprocess error: Can't locate object method "Return value of 0" via package "Mojo::IOLoop::Subprocess" at /opt/perl5.28/lib/site_perl/5.28.1/Mojo/IOLoop/Subprocess.pm line 53.
4s Subprocess error: Can't locate object method "Return value of 1" via package "Mojo::IOLoop::Subprocess" at /opt/perl5.28/lib/site_perl/5.28.1/Mojo/IOLoop/Subprocess.pm line 53.
##
##
0s Loop PID is 8462
0s Start of loop 0
0s End of loop 0
0s Start of loop 1
0s End of loop 1
0s Hello, from loop 0 (arg Mojo::IOLoop::Subprocess=HASH(0x55ba4daf9530)) in PID 8463!
0s Hello, from loop 1 (arg Mojo::IOLoop::Subprocess=HASH(0x55ba4eebd138)) in PID 8464!
2s Good bye, from PID 8463!
2s Good bye, from PID 8464!
2s Result from loop 0: Return value of 0
2s Result from loop 1: Return value of 1