Frage ist, wie der Titel beschreibt, Können Sie eine Funktion in Ihrem Haupt node.js Server-Datei aus einer Moduldatei ohne ein CallBack aufrufen? Und wenn das nicht möglich ist, können Sie ein CallBack in einem Intervall verwenden und es mehrmals aufrufen?Können Sie eine Funktion in Ihrer Hauptdatei node.js server innerhalb einer Moduldatei ohne CallBack aufrufen?
Beispielcode:
//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:
Wenn dies nicht möglich ist, wäre es möglich, es mit einen Rückruf zu tun, indem Sie die folgenden Zeilen zu ändern ..
//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);
}
Prost.
Das hat nichts mit Callbacks und allem was mit Scope zu tun hat zu tun. Ihre Frage bezieht sich jedoch auf das Aufrufen einer Funktion in server.js FROM mFile.js, aber ich sehe nicht, wo das geschieht. Wenn es umgekehrt ist, ist Ihre Frage nicht klar formuliert. – HeadCode
@HeadCode siehe "Foobar.prototype.fooReady" Innerhalb des Intervalls möchte ich foo() in der Hauptdatei server.js aufrufen. – user2267175
Ihr Code scheint nicht mit dem Text Ihrer Frage übereinzustimmen. Der Text Ihrer Frage fragt nach Rückrufen (die ich unten beantwortet habe), aber ich sehe keine Rückrufe in dem Code, den Sie gepostet haben. – jfriend00