【发布时间】:2016-08-01 12:32:06
【问题描述】:
问题如标题所述, 您可以在 没有 回调的模块文件中调用主 node.js 服务器文件中的函数吗? 而且,如果这不可能,您可以在一个区间内使用回调并多次调用它吗?
示例代码:
//Main server.js file
var moduleFile = require('./mFile');
...
var foobar = moduleFile.addFoobar();
if(foobar) foobar.fooReady();
function foo(bar){
//do something.
}
//moduleFile / mFile.js
var foobars = [];
function Foobar(){
this.id = 0;
Foobar.prototype.fooReady = function(){
setInterval( function(){
//call foo(); in main file..?
}, 1000);
}
}
var addFoobar = function(data) {
var foobar = new Foobar();
foobar.id = foobars.length+1;
foobars.push(foobar);
return foobar;
}
module.exports.foobars = foobars;
module.exports.addFoobar = addFoobar;
编辑:
如果上述方法不可行,是否可以通过更改以下行来使用回调来做到这一点..
//main server.js
if(foobar) foobar.fooReady(foo);
//mFile.js
Foobar.prototype.fooReady = function(callback){
setInterval( function(){
//can you call foo(); in main file via callback(); on every interval run?
}, 1000);
}
干杯。
【问题讨论】:
-
这与回调无关,与范围有关。但是,您的问题是关于从 mFile.js 调用 server.js 中的函数,但我看不出发生了什么。如果是相反的方式,则您的问题措辞不明确。
-
@HeadCode 请在区间内查看“Foobar.prototype.fooReady”,我想在主 server.js 文件中调用 foo()。
-
您的代码似乎与您的问题文本不一致。您的问题文本询问所有有关回调(我在下面回答),但我在您发布的代码中没有看到回调。
-
@user2267175 哦,我明白了。不,除非您将
foo放在单独的文件中并在两个地方都需要它,否则您将无法这样做。 -
我没有在代码中包含任何回调,因为正如我提到的,我想在没有回调的情况下这样做,但如果这不可能,我添加了关于它是否会的次要问题可以通过回调来做到这一点。
标签: javascript node.js