我試圖使用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
@你有想過嗎? –