首页 > 解决方案 > nodejs在普通函数中调用生成器函数

问题描述

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

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

和正常功能:

function normal(param) {
  var variable = 1;

  // yield generator function 
}

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

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

  Promise.all(result);
});

但这给了我一个错误

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

标签: node.jsfunctiongenerator

解决方案


您可以像这样在生成器函数上使用该next()方法:

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

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

console.log(higherLevel());

这样你就可以得到yield另一个函数内部的下一个值。


推荐阅读