Как вернуться с отложенного обещания php - PullRequest
1 голос
/ 31 мая 2019

Невозможно вернуть значение из deferred->promise().У меня в контроллере есть метод, который представляет собой отложенное обещание с асинхронным вызовом жадности к API отдыха, который извлекает данные.При разрешении deferred->promise() в методе контроллера возврат не отправляет данные обратно.Но я могу видеть данные, которые мне нужны, когда я использую print_r.

class CharController extends BaseController {
    public function getCharacters() {
        $characterService = new CharacterService;

        $characterService->getCharacters()
            ->then(function($result) {
                print_r($result);
                return new Response(201, ['Content-type' => 'application/json'], $result);
            });
    }
}
-- In another file.--
public function getCharacters() {
        $deferred = new Deferred();
        $client = new Client();
        $promise = $client->getAsync("https://sample.com/api/getData");

        $promise
            ->then(function (ResponseInterface $res) use ($deferred) {
                $body = json_decode((string) $res->getBody(), true);
                $deferred->resolve($body);
            }, function (RequestException $e) use ($deferred) {
                echo $e->getMessage() . "\n";
                $deferred->reject($e);
            });
        $response = $promise->wait();

        return $deferred->promise();
    }

Мне нужно CharController@getCharacters(), чтобы вернуть данные из API, но я не получил ответа.Я могу видеть данные из print_r().

...