我试图使用食人鱼的承诺来进行一些http调用,以说明我所拥有的东西,我做了一个简单的示例,其中一个伪造的http请求将花费5秒钟:
$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);
Run Code Online (Sandbox Code Playgroud)
现在,我想做的是同时启动它们,然后使两个echo都在等待响应。实际发生的情况是承诺1触发,等待5秒钟,然后触发承诺2,再等待5秒钟。
根据我的理解,我也许应该使用->resolve();一个promise函数来启动它,但是我不知道如何通过resolve函数来进行http调用。