【发布时间】:2016-06-10 14:51:32
【问题描述】:
我已经阅读了很多关于将数组作为函数参数传递给不同返回值的内容。但如果我有三个 js 文件,它就不起作用。
main.js
module.exports = function(){
this.deliver = require('./file1.js');
this.start = require('./file2.js');
}
file1.js
module.exports = function(id){
require('./main.js')();
function deliver(id){
console.log('Does deliver() work?:'+id);
var arr = new Array(2);
arr[0] = 'content 1';
arr[1] = 'content 2';
return arr;
}
}
file2.js
require('./main.js')();
start.apply(null, deliver('yes'));
function start(x, y){
console.log('x: '+x);
console.log('y: '+y);
}
你有什么想法,为什么没有定义交付?
@Jose,谢谢。是的,这就是整个代码。如果一切都在一个文件中,它就可以工作。但不在三个文件中...
@Quentin,谢谢。你知道我如何使它与三个文件一起工作吗? --> 我尝试将一个任务从 file2 外包到 file1,因为其他任务也需要它。最后,我需要将 file1 的结果返回到 file2 才能使用它。在我的示例中,我省略了外包。
感谢您的提示,Qentin。我已经更新了上面的代码。 deliver(x) 现在包含一个参数,我想回到 file2.js 中。它已经到达 file1 但没有回来。
我仍在努力寻找解决方案。我已经了解如何将数据从 file2 传递到 file1(反之亦然)。
main.js
module.exports = function(){
this.file1 = require('./file1.js');
this.file2 = require('./file2.js');
}
file1.js
require('./main.js')();
//file2.receive('yes', 'content 1');
module.exports = {
deliver : function(id){
console.log('Does deliver() work?:'+id);
return file2.receive(id, 'content 1');
}
}
file2.js
require('./main.js')();
file1.deliver('yes');
module.exports = {
receive : function(x, y){
console.log('x: '+x);
console.log('y: '+y);
}
}
如果“return file2.receive(id, 'content 1');”,我可以启动 file2 并将数据传递给 file1淡出。我也可以从 file1 开始并将数据传递给 file2,只要“file1.deliver('yes');”淡出。为什么不同时工作?
【问题讨论】:
-
这就是 file2.js 的全部代码吗?
-
“顺便说一句,下面的也行不通”——当然不行。
deliver仍然超出范围。 -
是的,我的错。我的编码能力很慢,即使在理解你的观点方面也是如此。
标签: javascript node.js