【问题标题】:How to use recursions with yield?如何使用带收益的递归?
【发布时间】:2020-11-20 09:50:02
【问题描述】:

有没有办法在 Vanilla Javascript 中混合使用 yield 生成器和递归?

我有一个用例真的关闭了下面的代码,请不要介意异步/等待,因为原始中有承诺。

问题在于以下示例仅迭代一次。

let n = 0;

async function* atGet(offset=undefined) {
    if (n == 0) offset = true;

    if (n < 5) yield n;
  
    if (!!offset) {
        n = n + 1;
        atGet(n);
    }
}

const init = async () => {
    try {
        for await (let n of atGet()) {
            console.log(n)
        }
    }
    catch(err) {
        throw err;
    }
};

init();

我想知道我做错了什么,欢迎任何建议。

【问题讨论】:

    标签: javascript recursion generator


    【解决方案1】:

    您还需要yield* 生成器函数的调用。

    if (offset) yield* atGet(n + 1);
    

    【讨论】:

    • 太棒了,也感谢您提供文档链接
    猜你喜欢
    • 2011-05-14
    • 2013-09-28
    • 2015-04-29
    • 1970-01-01
    • 2018-01-05
    • 2019-04-14
    • 2014-10-20
    • 2021-03-11
    • 1970-01-01
    相关资源
    最近更新 更多