PHP yield 没有 for?

PHP yield without for?

我一直在查看 PHP 中 yieldsome examples,试图了解人们会在哪些情况下使用它,我开始注意到所有我查看的示例中有 yieldfor(...) {}foreach(...) {} 语句中。

有没有办法在 for 之外使用 yield

不需要循环。这有效:

function foo() {
   yield 1;
   yield 2;
   yield 3;
} 

使用它的一个原因是将其用作与 Javascript 中的 'await' 类似的功能。

例如,可以构建一个为此目的使用 yield 的异步框架:

function foo() {
   $response = yield asyncHttpRequest('GET', 'http://blabla');
}

这个具体示例是虚构的,但它是可能的(并且已经完成)。

我做了这样一个异步库。此处的文档:https://sabre.io/event/coroutines/

虽然那里有更好的 maintained/more 流行图书馆。