#!/opt/perluseMojo::Base-strict;useMojo::UserAgent;useMojo::IOLoop;{packageMojo::UserAgent::Promises;usestrict;usewarnings;# use Promises qw[deferred]; <-- KudosuseMojo::Base'Mojo::UserAgent';useMojo::Promise;useMojo::Utilqw(monkey_patch);substart{my($self,$tx)=@_;my$promise=Mojo::Promise->new;$self->SUPER::start($tx,sub{$promise->resolve($self,$tx)});return$promise;}formy$name(qw(DELETE GET HEAD OPTIONS PATCH POST PUT)){monkey_patch__PACKAGE__,sprintf("a%s",lc$name),sub{my$self=shift;my$cb=ref$_[-1]eq'CODE'?pop:undef;return$self->start($self->build_tx($name,@_),$cb);};}}my$ua=Mojo::UserAgent::Promises->new->max_redirects(4);my@promises=();push(@promises,$ua->aget("http://mojolicio.us")->then(sub{my$self=shift;say("Yay: ".$_[1]->res->dom->at('title')->text);})->then(sub{say("Next");}));push(@promises,$ua->aget("http://slashdot.org")->then(sub{my$self=shift;say("Skippie: ".$_[1]->res->dom->at('title')->text);})->then(sub{say("Yes");}));Mojo::Promise->all(@promises)->then(sub{say("Done");Mojo::IOLoop->stop;});Mojo::IOLoop->startunlessMojo::IOLoop->is_running;
Comments (0)
HTTPSSSH
You can clone a snippet to your computer for local editing.
Learn more.