Что означает звезда (*) в определении функции JavaScript в структуре Koa?

Я познакомился с Koa (http://koajs.com/). Многие из примеров включают символ звезды вместо имени функции. Например, в приветственном примере мира есть:

var koa = require('koa');
var app = koa();

app.use(function *(){
  this.body = 'Hello World';
});

app.listen(3000);

Что означает эта звезда?

Ответы

Ответ 1

Обычно он создает "итератор", поэтому вы можете дать результат по одному.
Аналогично работе С# yield.

Официальная информация

Пример

"Бесконечная" последовательность чисел Фибоначчи (несмотря на поведение около 2 ^ 53):

function* fibonacci() {
    let [prev, curr] = [0, 1];
    for (;;) {
        [prev, curr] = [curr, prev + curr];
        yield curr;
    }
}

Генераторы могут повторяться в циклах:

for (n of fibonacci()) {
    // truncate the sequence at 1000
    if (n > 1000)
        break;


  print(n);
}

Генераторы являются итераторами:

let seq = fibonacci();
print(seq.next()); // 1
print(seq.next()); // 2
print(seq.next()); // 3
print(seq.next()); // 5
print(seq.next()); // 8