[英]In Node.js, how do you store callback data from a module's function in the main app?
[英]Can you call a function in your main node.js server file from within a module file without a callBack?
问题正如标题所描述的那样,您可以在没有回调的情况下从模块文件中的主node.js服务器文件中调用函数吗? 而且,如果不可能的话,您可以间隔使用一次CallBack并多次调用吗?
示例代码:
//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);
}
干杯。
您可以在没有回调的情况下从模块文件中的主node.js服务器文件中调用函数吗?
是的,您可以在其他模块中调用同步函数而无需回调。 就像调用Math.max()
或Javascript中的任何普通函数一样。
您可以间隔使用一次CallBack并多次调用吗?
是的你可以。
使用回调有多种原因。 例如, Array.prototype.map()
使用一个设计为多次被同步调用的回调,这是使用回调的一种完全可以接受的方式。
回调还用于表示异步操作的完成。 在这种情况下,它们通常仅被调用一次以表示完成。
但是, setInterval()
本身使用了一个异步回调,该回调被设计为多次调用。 因此,您当然也可以那样设计。
重要的是您的设计必须清晰明了,以便呼叫者确切知道期望什么。 它叫一次或多次吗? 是同步还是异步调用? 只要呼叫者知道会发生什么,在某些情况下所有这些操作都是适当的。
您当然可以在间隔中使用回调,如下所示:
//main server.js
if(foobar) foobar.fooReady(foo);
//mFile.js
Foobar.prototype.fooReady = function(callback){
setInterval( function(){
callback();
}, 1000);
}
或者,如果在此间隔内没有其他事情发生,那么甚至可能是这样:
//mFile.js
Foobar.prototype.fooReady = function(callback){
setInterval(callback, 1000);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.