【发布时间】:2019-05-20 15:43:22
【问题描述】:
我试图从一个子例程返回一个承诺,该子例程包含一些从 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;
【问题讨论】:
标签: perl promise mojolicious mojo-useragent