function fetchProduct()
{
$cursor = r\table("tableOne")->changes()->run($conn);
foreach ($cursor as $product) {
yield $product;
}
}
$product = fetchProduct();
var_dump($product);
echo "i"; //when the function use yield, this line executed. But when return used, it doesn't come to this line.
Я понимаю переосмысление changes()
будет продолжать прислушиваться к изменениям, так что я обнаружил, что лучше использовать урожай над $cursor
, Но yield
не возвращает значение вызывающей стороне. Но при возврате используется возвращаемое значение.
Как заставить доходность возвращать любое значение при изменении?
Рекомендации:
https://rethinkdb.com/docs/async-connections/
Что значит yield в PHP?
Когда используешь yield()
это фактически делает функцию «возврат» итератором. Итак, в соответствии с примером, который вы указали, «Что значит yield в PHP?» вам нужно перебрать возвращаемое значение.
function fetchProduct()
{
//$cursor = r\table("tableOne")->changes()->run($conn);
$cursor = range(1,5);
foreach ($cursor as $product) {
yield $product;
}
}
//$product = fetchProduct();
//var_dump($product);
foreach ( fetchProduct() as $product ){
var_dump($product);
}
echo "i";
В приведенном выше примере я изменил его, чтобы использовать range()
как значения, но это показывает, как вы можете обработать возвращаемое значение и разницу между тем, как вы пытались заставить его работать, и как оно может работать.
Я бы сказал, что я не знаю, как это работает с rethinkdb, но больше о том, как yield()
работает в общем.
Других решений пока нет …