我试图使用guzzle promises为了使一些HTTP调用,来说明我有什么,我做了这个简单的例子,其中一个假的http请求将需要5秒:使用狂饮承诺asyncronously
$then = microtime(true);
$promise = new Promise(
function() use (&$promise) {
//Make a request to an http server
$httpResponse = 200;
sleep(5);
$promise->resolve($httpResponse);
});
$promise2 = new Promise(
function() use (&$promise2) {
//Make a request to an http server
$httpResponse = 200;
sleep(5);
$promise2->resolve($httpResponse);
});
echo 'PROMISE_1 ' . $promise->wait();
echo 'PROMISE_2 ' . $promise2->wait();
echo 'Took: ' . (microtime(true) - $then);
现在我想要做的就是启动它们,然后使两个回声等待响应。实际发生的是诺言1发射,等待5秒然后发射诺言2并等待5秒。
从我的理解也许我应该使用一个承诺的->resolve();
功能,使之开始,但我不知道如何通过解决一个函数中,我将成为一个HTTP调用
主要的问题是http调用使得各种函数调用下来的兔子洞。理想情况下,我希望能够将我的'doHttpCallAndReturn();'包装在承诺中,并在准备好时获取响应。 – Rich
这是不是只是重申没有回答它的问题?我认为最初的问题是如何等待多重承诺,所有承诺都是异步发起的,预计可能会以任何顺序完成。 – Jason
@你有想过吗? –