Last active
October 29, 2018 23:18
-
-
Save skaurus/63a27c7a30a29697792bdc00ed3fa729 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Controller::method { | |
my $promise = Utils::get_me_promise; | |
return $promise->then(sub ($inner_promise) { | |
say 'method outer resolved'; | |
return $inner_promise->then(sub ($something) { | |
say 'method inner resolved'; | |
render $something; | |
}, sub { | |
log_error | |
} | |
}, sub { | |
log_error | |
}); | |
} | |
Utils::get_me_promise { | |
my @promises; | |
for (...) { | |
push @promises, $ua->post_p->then(sub ($tx) { | |
return _get_data_from($tx) | |
}); | |
} | |
# @promises always non empty | |
return Mojo::Promise->all(@promises)->then(sub (@data) { | |
say 'get_me_promise resolved'; | |
return Utils::_get_inner_promise(@data) | |
}); | |
} | |
Utils::_get_inner_promise (@data) { | |
my @promises; | |
for (...) { | |
... | |
} | |
# @promises could be empty | |
my $promise = @promises ? Mojo::Promise->all(@promises) : Mojo::Promise->new->resolve; | |
return $promise->then(sub { | |
say '_get_inner_promise resolved'; | |
return something-that-should-return-to-controller-method; | |
}); | |
} | |
# so, when @promises in _get_inner_promise empty, I get: | |
# get_me_promise resolved | |
# _get_inner_promise resolved | |
# method outer resolved | |
# I expect: | |
# get_me_promise resolved | |
# method outer resolved | |
# _get_inner_promise resolved | |
# method inner resolved |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment