问题是,正如标题所描述的,您能否从没有node.js的模块文件中调用主服务器文件中的函数为callBack?如果这是不可能的,那么您能在间隔内使用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);
}干杯。
发布于 2016-08-01 04:10:36
您能从没有node.js的模块文件中调用主callBack服务器文件中的函数吗?
是的,您可以在没有回调的情况下调用其他模块中的同步函数。这就像调用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);
}https://stackoverflow.com/questions/38690884
复制相似问题