Невозможно вернуть значение из 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()
.