在 PHP 異步編程中,實(shí)現(xiàn)等待的方法是使用 Promise 和異步函數(shù)
首先,確保已安裝了 amphp/amp 庫??梢酝ㄟ^ Composer 安裝:
composer require amphp/amp
接下來,創(chuàng)建一個(gè)異步函數(shù)并返回一個(gè) Promise:
<?php
require 'vendor/autoload.php';
use Amp\Promise;
use Amp\Success;
function asyncFunction(): Promise {
return new Success("異步操作完成");
}
現(xiàn)在,在主程序中調(diào)用這個(gè)異步函數(shù),并使用 yield
關(guān)鍵字等待結(jié)果:
<?php
require 'vendor/autoload.php';
use Amp\Loop;
use function Amp\call;
Loop::run(function () {
$result = yield call('asyncFunction');
echo "異步函數(shù)返回: {$result}\n";
});
在這個(gè)例子中,我們使用了一個(gè)簡單的異步函數(shù),它立即返回一個(gè)值。實(shí)際上,您可能會(huì)在異步函數(shù)中執(zhí)行更復(fù)雜的操作,如 HTTP 請求、文件讀寫等。
注意:AMP 庫不僅支持 Promise,還提供了許多其他功能,如協(xié)程、延遲執(zhí)行、定時(shí)器等。要了解更多信息,請查看官方文檔:https://amphp.org/amp/