我试图从一个包含从 HTTP 请求获得的一些数据到 Web 服务器的子程序中返回一个承诺。但我无法调用then
结果。缩小范围后,似乎不可能将返回的承诺分配给get_p
变量,然后将其用作承诺。
这是一个例子。我原以为这两个请求完全相同,但只有第二个请求运行 then 块中的代码。
有人可以解释一下有什么区别,如果我想在子程序then
之外链接更多方法,我应该如何从子程序返回一个承诺?
#!/usr/bin/perl -w
use strict;
use warnings;
use utf8;
use 5.024;
use Data::Dumper;
use Mojo::IOLoop;
use Mojo::UserAgent;
my $promise = Mojo::UserAgent->new->get_p('http://example.com');
$promise->then(sub {
my $tx = shift;
warn 'Using variable';
warn $tx->result->body;
})->wait;
Mojo::UserAgent->new->get_p('http://example.com')
->then(sub {
my $tx = shift;
warn 'Not using variable';
warn $tx->result->body;
})->wait;