Javascript 发电机和设定值/在产量上完成

Javascript 发电机和设定值/在产量上完成,javascript,ecmascript-6,Javascript,Ecmascript 6,如果我创建了一个自定义生成器,我可以根据自己的意愿设置值/done,但我相信我在这里使用es6生成器会出错,因为我似乎无法按照自己的意愿设置值/done。当我设置某个内容时,所有内容都进入“值”,但生成器返回“done:false”--我试图强制执行“done:true” var A=[ {id:1,第1页:'page one'}, {id:2,第二页:'page two'}, {id:3,第三页:'第三页'}, {id:4,第四页:'page four'}, ] 功能*gen(iTree){

如果我创建了一个自定义生成器,我可以根据自己的意愿设置值/done,但我相信我在这里使用es6生成器会出错,因为我似乎无法按照自己的意愿设置值/done。当我设置某个内容时,所有内容都进入“值”,但生成器返回“done:false”--我试图强制执行“done:true”

var A=[
{id:1,第1页:'page one'},
{id:2,第二页:'page two'},
{id:3,第三页:'第三页'},
{id:4,第四页:'page four'},
]
功能*gen(iTree){
让输入=产生空值
while(true)
输入=生成ITree(输入)?ITree(输入):{done:true}
}
//这将是建立更多,只是显示一个
//函数在这里的传递
设inter=(a)=>{
返回A[A]
}
设c=gen(inter)
console.log(c.next())
console.log(c.next(4))/“强制
完成
”将通过
返回来完成。在发电机中时

yield 4;
// {value: 4, done: false}

return 4;
// {value: 4, done: true}
“强制
完成
”将通过
返回来完成。在发电机中时

yield 4;
// {value: 4, done: false}

return 4;
// {value: 4, done: true}

下面是我为创建您在代码中寻找的答案而想到的

    var A = [
    {id: 1, page: 'page one'},
    {id: 2, page: 'page two'},
    {id: 3, page: 'page three'},
    {id: 4, page: 'page four'},
  ]
function* gen(iteree) {
    let input = yield null
    while(input <= A.length) {
      if(iteree(input)){
        yield iteree(input) 
      }else{
        return null;
      }
   }
}

// this will be built out more, just showing a 
// passing of a function here
let inter = (a) => { 
       return A[a]
}

let c = gen(inter)
console.log(c.next())
console.log(c.next(4))
var A=[
{id:1,第1页:'page one'},
{id:2,第二页:'page two'},
{id:3,第三页:'第三页'},
{id:4,第四页:'page four'},
]
功能*gen(iTree){
让输入=产生空值
while(输入{
返回A[A]
}
设c=gen(inter)
console.log(c.next())
控制台日志(c.next(4))

以下是我提出的在代码中创建您想要的答案的方法

    var A = [
    {id: 1, page: 'page one'},
    {id: 2, page: 'page two'},
    {id: 3, page: 'page three'},
    {id: 4, page: 'page four'},
  ]
function* gen(iteree) {
    let input = yield null
    while(input <= A.length) {
      if(iteree(input)){
        yield iteree(input) 
      }else{
        return null;
      }
   }
}

// this will be built out more, just showing a 
// passing of a function here
let inter = (a) => { 
       return A[a]
}

let c = gen(inter)
console.log(c.next())
console.log(c.next(4))
var A=[
{id:1,第1页:'page one'},
{id:2,第二页:'page two'},
{id:3,第三页:'第三页'},
{id:4,第四页:'page four'},
]
功能*gen(iTree){
让输入=产生空值
while(输入{
返回A[A]
}
设c=gen(inter)
console.log(c.next())
控制台日志(c.next(4))

uggg!!太简单了..我的问题不好问!哈哈--但是--如果我想再次启动发电机呢?似乎,一旦“完成”返回…所有赌注都结束了。不用担心,很乐意帮忙:)我只是问:如果我想再次启动发电机,我不想创建一个新的实例。发电机无法重新启动,一旦某件事
完成:真的
完成,你需要创建一个新的发电机。uggg!!太简单了..我不想再问了!哈哈,但是--如果我想再次启动发电机呢?看起来,一次“完成”已返回…所有赌注均已结束。无需担心,乐于帮助:)我只是问:如果我想再次启动发电机,我不想创建一个新的实例。发电机无法重新启动,一旦某件事
完成:true
完成,您需要创建一个新的发电机。是的-这很好,我最后做的是。我发现的问题是,一旦您返回“true”生成器停止运行。我想重新启动它,而不必生成新的生成器。你想用同一个生成器再次迭代同一数组吗?是的,想法是它是一个步进器--它可以向前或向后(传递到生成器中)-我想这违背了“本质”发电机的,但它的使用必须超出lzy评估。也许这现在会有帮助?是的-这很好,我最后做了什么。我发现的问题是一旦你返回“真”生成器停止运行。我想重新启动它,而不必生成新的生成器。你想用同一个生成器再次迭代同一数组吗?是的,想法是它是一个步进器--它可以向前或向后(传递到生成器中)-我想这违背了“本质”一台发电机,但它的使用必须超出lzy评估。也许这对现在有帮助?