PHP 的 SparkPost 客户端库:异步 promise.then() 发送不发送

SparkPost client library for PHP: asynch promise.then() send not sending

我正在使用来自 https://github.com/SparkPost/php-sparkpost#send-an-email-using-the-transmissions-endpoint

此处使用异步承诺: https://github.com/SparkPost/php-sparkpost#then-asynchronous

一切都已使用 Composer 正确安装。如果我使用 $response = $promise->wait();电子邮件已发送但未发送 $promise->then(function(){}, function(){})

我是 运行 php 来自命令行的脚本,异步选项设置为 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();,就可以了。

"somehow" 我的意思是您可以使用 all(), some() and other functions.

将 promise 组合在一起