node.js - NodeJS在普通函数内调用生成器函数

标签 node.js function generator

我有 2 个函数:一个生成器函数和一个普通函数(不带 *)。生成器函数(示例):

function* generator(i) {
  yield i;
  yield i + 10;
}

和正常功能:

function normal(param) {
  var variable = 1;

  // yield generator function 
}

我知道在普通函数中不可能产生yield,但是我如何调用生成器?我必须使用 Promises 或类似的东西吗?如果必须是 Promise,那么它应该是什么样子?我尝试这样做:

new Promise((resolve) => {
  var result = generator(3);

  Promise.all(result);
});

但这给了我一个错误

反之亦然,它是如何工作的?例如,如果我需要在生成器内调用普通函数?

最佳答案

您可以在生成器函数上使用 next() 方法,如下所示:

function* generator(i) {
  yield i;
  yield i + 10;
}

function higherLevel (){
  let gen = generator(1).next();
  return gen
}

console.log(higherLevel());

这样您就可以在另一个函数中获取 yield 的下一个值。

关于node.js - NodeJS在普通函数内调用生成器函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50969563/

相关文章:

mysql - 使用 sequelize 展平子关联中的列

php - 可执行文件有更多数据要发送,但不知道如何向可执行文件发送信号,表明已发送的数据已处理并准备好下一个 block

javascript - 使用生成器在 AngularJS 中使用 ng-repeat 进行迭代无法按预期工作

python - 在递归代码中用 return 替换 Yield

python - python lambda/fn 可以代表任意调用者产生吗?

javascript - Node js中游标和流的区别

javascript - 为什么我们需要 javascript 中的自引用对象

jQuery 在回调中获取源元素

node.js - 使用 mongoose 保存对象后,返回包含字段子集的对象的最简单方法是什么?

JavaScript:使用工厂函数中的内部原型(prototype)方法从数组返回评级值