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.我知道rethinkdb的changes()会不断监听变化,所以我发现在$cursor上使用will更好。但是yield不向主叫方返回值。但是当使用return时,返回的值。
当发生变化时,如何使收益率返回任何值?
参考文献:
发布于 2018-03-17 16:15:43
在使用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()是如何工作的。
https://stackoverflow.com/questions/49333721
复制相似问题