Я пытаюсь использовать пул Guzzle в PHP. Но я испытываю трудности при обработке запроса ASYNC. Ниже приведен фрагмент кода.
$client = new \GuzzleHttp\Client();
function test()
{
$client = new \GuzzleHttp\Client();
$request = $client->createRequest('GET', 'http://l/?n=0', ['future' => true]);
$client->send($request)->then(function ($response) {
//echo 'Got a response! ' . $response;
return "\n".$response->getBody();
});
}
$res = test();
var_dump($res); // echoes null - I know why it does so but how to resolve the issue.
Кто-нибудь, как я могу заставить функцию ждать и получить правильный результат.
Если бы вы могли вернуть его, он не был бы асинхронным в стиле кода. Верните обещание и разверните его снаружи.
function test()
{
$client = new \GuzzleHttp\Client();
$request = $client->createRequest('GET', 'http://l/?n=0', ['future' => true]);
// note the return
return $client->send($request)->then(function ($response) {
//echo 'Got a response! ' . $response;
return "\n".$response->getBody();
});
}
test()->then(function($body){
echo $body; // access body here inside `then`
});
Других решений пока нет …