Я использую пример из
https://github.com/SparkPost/php-sparkpost#send-an-email-using-the-transmissions-endpoint
с асинхронным обещанием здесь:
https://github.com/SparkPost/php-sparkpost#then-asynchronous
Все установлено правильно с помощью Composer. Если я использую $ response = $ обещание-> wait (); электронное письмо отправлено, но не $ обещание-> затем (function () {}, function () {})
Я запускаю php скрипт из командной строки, для параметра asynch установлено значение true
/// this works:
try {
$response = $promise->wait();
echo $response->getStatusCode()."\n";
print_r($response->getBody())."\n";
} catch (\Exception $e) {
echo $e->getCode()."\n";
echo $e->getMessage()."\n";
}
// but this doesn't
$promise->then(
// Success callback
function ($response) {
echo $response->getStatusCode()."\n";
print_r($response->getBody())."\n";
},
// Failure callback
function (Exception $e) {
echo $e->getCode()."\n";
echo $e->getMessage()."\n";
}
);
В документах SparkPost есть ошибка (или просто неверное предположение).
Вы должны позвонить ->wait()
так или иначе. Так что просто добавьте $promise->wait();
в конце вашего второго сценария, и все будет хорошо.
Под «каким-то образом» я имею в виду, что вы можете объединить обещания вместе, используя all()
, some()
и другие функции.
Других решений пока нет …