3

PHPでGuzzleプールを使用しようとしています。しかし、私は 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.

関数を待機させて正しい結果を得るにはどうすればよいですか。

4

2 に答える 2

1

あなたがそれを返すことができれば、それはコードスタイルで非同期ではありません. 約束を返し、外側に包みを開けます。

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`
});
于 2015-01-30T15:05:25.380 に答える