Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有一种方法可以将变量从Javascript中的不同模块传递到导出的生成器?_Javascript_Node.js_Function_Generator - Fatal编程技术网

是否有一种方法可以将变量从Javascript中的不同模块传递到导出的生成器?

是否有一种方法可以将变量从Javascript中的不同模块传递到导出的生成器?,javascript,node.js,function,generator,Javascript,Node.js,Function,Generator,我正在写一个有两个模块的代码。我试图将第一个模块的变量作为参数传递给第二个模块的生成器函数 到目前为止,我的代码就是这样的。 我正在尝试在第二个模块的生成器(函数*)函数中console.logone: 单元2: var fn = function* () { yield console.log(one); yield console.log('done'); } var gen = fn(); module.exports = {gen} 单元1: var ap

我正在写一个有两个模块的代码。我试图将第一个模块的变量作为参数传递给第二个模块的生成器函数

到目前为止,我的代码就是这样的。 我正在尝试在第二个模块的生成器(函数*)函数中console.log
one

单元2:

var fn = function* () {

     yield console.log(one);

     yield console.log('done');
}

var gen = fn();


module.exports = {gen}
单元1:

var app = require('./app');
var one = 1;

app.gen.next(one);
app.gen.next();
我曾尝试在
fn()
以及
函数*()
中将一个作为参数传递,但没有成功

我希望从第二个模块中的控制台日志中看到的输出是:

1
done
yield
计算您传递到
next()
的内容。您不能“共享”变量,只能共享值

我曾尝试在fn()和函数*()中作为参数传递一个参数,但没有成功

如果导出生成器本身,则该操作将起作用:

 const fn = function* (one) {
    yield console.log(one);
    yield console.log('done');
 }

 var gen = fn(1); 
 gen.next();  // 1
 gen.next(); // "done"

生成器函数参数可用于实例化: 用next传递1值有点奇怪

const fn=函数*(arg)
{
设foo=arg
foo+=收益率foo//1
foo+=收益率foo//2
foo+=收益率foo//3
}
变量一='abc=>'
设gen=fn(一)
console.log(gen.next('x'))
console.log(gen.next('y'))
console.log(gen.next('z'))
console.log(gen.next('bye'))

.as控制台包装{max height:100%!important}
谢谢大家的回复。我终于找出了代码中的错误。我的错误是声明
var gen=fn()在错误的模块中;它应该在模块1中声明如下:

var app = require('./app');
var one = 1;
var gen = app.fn(one); // First correction made here

gen.next();
gen.next();
module.exports = {fn}
在我修订的代码中,我在模块1中声明了它,并通过它传递了一个参数
one
,然后在模块2中访问它,如下所示:

var fn = function* (one) {... // Second correction made here
然后导出生成器函数,而不是在末尾导出生成器对象,如下所示:

var app = require('./app');
var one = 1;
var gen = app.fn(one); // First correction made here

gen.next();
gen.next();
module.exports = {fn}
最终修订代码

因此,现在这两个模块如下所示:

var app = require('./app');
var one = 1;
var gen = app.fn(one); // First correction made here

gen.next();
gen.next();
module.exports = {fn}
app1.js

app.js


抱歉,我测试了你的声明,在我看来一切都是错误的不,只是我错过了一个初始的
gen.next()
好的,但它不清楚,我尝试使用“hello”,它是不定义的为什么不只是导出生成器函数而不是导出生成器对象?@Bergi是的,这就是我在修订的代码中所做的