質問はタイトルと同じです モジュールファイルの中からmain node.jsサーバーファイルの関数を呼び出すことができますか?コールバック? それができない場合は、ある間隔でコールバックを使用して複数回コールすることはできますか?コールバックなしでモジュールファイル内からメイン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;
EDIT:
上記できない場合、..
次の行を変更することによりとそれにコールバックを を実行することも可能です//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);
}
乾杯。
これは、コールバックやスコープとは何も関係ありません。しかし、あなたの質問は、server.jsからmFile.jsの関数を呼び出すことですが、どこに起こっているのかわかりません。あなたの質問の周りに他の方法がある場合は、明確に言葉を言わない。 – HeadCode
@HeadCodeインターバル内の "Foobar.prototype.fooReady"を見てください。メインのserver.jsファイルでfoo()を呼びたいと思います。 – user2267175
あなたのコードは、あなたの質問のテキストと一致していないようです。あなたの質問のテキストは、コールバック(私は以下に答えた)に関するすべてを尋ねますが、投稿したコードにはコールバックはありません。 – jfriend00