rethinkdb changes () с yield не возвращает значение

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?

0

Решение

Когда используешь 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() работает в общем.

0

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

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

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