【发布时间】:2015-06-26 23:42:59
【问题描述】:
我有一个函数y() 应该会产生一些记录。
然而,此函数在回调中获取记录,该回调被传递给另一个函数d() 以访问数据。
d() 不会返回或产生任何东西。
如果接受回调的其他函数 d() 被视为黑盒,这种模式是否可能?
什么是替代设计?
function y() {
d( function ($records) { // May be called multiple times
// How to yield for "y()"?
foreach ($records as $record)
yield $record;
} );
}
【问题讨论】:
-
使用回调是同步编程开始的一种不寻常的模式。或者这段代码应该是异步的吗?
-
它可以以某种方式被认为是异步的,或者说是交错的,这就是为什么
yield适用 -d()执行一些初始化,可能多次调用回调,然后进行一些清理,并且不能展开/分解,例如因为它是 PHP 原生/扩展函数或来自第三方库。
标签: php callback generator yield