如何在JavaScript中终止“无限”生成器?

问题描述 投票:1回答:1

编辑:我编辑来解释screen具有下面的形状。

我有一个长度未知的javascript数组,其中包含对象“屏幕”,每个对象都有形状

{
  question:'bla bla bla',
  end: false
}

我想编写一个生成器,它将从此数组中产生一个特定的对象,该对象由传入的id选择,直到产生具有end === true的对象为止>

即,具有此特定id的对象应该是从生成器返回的last

值。之后,生成器应产生{value: undefined, done: true

我想写这样的东西

export function* questionGenerator() {
  let nextID = 1;
  let continueLoop = true;
  while (continueLoop) {
    const screen = getNextScreen(nextID);
    if (screen.end) continueLoop = false;
    nextID = yield getNextScreen(nextID);
  }
}

但是我不确定这是否是编写它的最佳方法。

还有更好的方法吗?

编辑:我编辑来解释屏幕的形状如下。我有一个未知长度的javascript数组,其中包含对象“屏幕”,每个对象的形状均为{问题:'bla bla bla',...

javascript ecmascript-6 generator
1个回答
0
投票

您可以从生成器中输入return,这将简化您的代码:

© www.soinside.com 2019 - 2024. All rights reserved.