我正在使用 Mojo::UserAgent 和 Mojo::Promise 运行对 3 个服务 A、B 和 C 的非阻塞调用。问题是当所有服务连接/解析时它工作正常,但如果其中之一,比如说,服务 C 无法连接,整个事情都失败了。有没有办法捕获所有服务(连接和不连接)?非常感谢任何见解。谢谢!
my @urls = (
'https://hostA/serviceA', # ServcieA connects and returns some text
'https://hostB/serviceB', # ServiceB connects and returns some text
'https://hostC/serviceC', # ServiceC refuses to connect
);
my $ua = Mojo::UserAgent->new;
my @promises = map { $ua->get_p($_) } @urls;
Mojo::Promise->all( @promises )->then(
sub {
for my $tx (map { $_->[0] } @_) {
print "Service result: $tx->res->text";
}#end for
}#end sub
)->catch(
sub {
for my $err (map { $_->[0] } @_) {
print "ERROR: $err";
}#end for
}#end sub
)->wait;