guzzle — клиентская библиотека SparkPost для PHP: asynch обещание .then () отправка не отправляется

Я использую пример из
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";
}
);

0

Решение

В документах SparkPost есть ошибка (или просто неверное предположение).

Вы должны позвонить ->wait() так или иначе. Так что просто добавьте $promise->wait(); в конце вашего второго сценария, и все будет хорошо.

Под «каким-то образом» я имею в виду, что вы можете объединить обещания вместе, используя all(), some() и другие функции.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]