首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >您能从没有node.js的模块文件中调用主callBack服务器文件中的函数吗?

您能从没有node.js的模块文件中调用主callBack服务器文件中的函数吗?
EN

Stack Overflow用户
提问于 2016-08-01 04:08:00
回答 1查看 50关注 0票数 0

问题是,正如标题所描述的,您能否从没有node.js的模块文件中调用主服务器文件中的函数为callBack?如果这是不可能的,那么您能在间隔内使用callBack并多次调用它吗?

示例代码:

代码语言:javascript
复制
//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;

编辑:

如果以上不可能,是否可以通过更改以下行来使用进行回调。

代码语言:javascript
复制
//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);
  }

干杯。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-01 04:10:36

您能从没有node.js的模块文件中调用主callBack服务器文件中的函数吗?

是的,您可以在没有回调的情况下调用其他模块中的同步函数。这就像调用Math.max()或Javascript中的任何普通函数一样。

您能在间隔内使用callBack并多次调用它吗?

可以,停那儿吧。

回调的使用有多种原因。例如,Array.prototype.map()使用的回调被设计为多次同步调用,这是一种完全可以接受的使用回调的方法。

回调也用于表示异步操作的完成。在这种情况下,它们通常只被调用一次以表示完成。

但是,setInterval()本身使用了一个异步回调,该回调设计用于多次调用。所以,你当然也可以这样设计一个。

重要的是,您的设计是明确的,以便调用者确切地知道期待什么。它叫一次还是多次?它是同步调用还是异步调用?在某些情况下,只要调用者知道期望什么,所有这些都是适当的。

您当然可以为您的间隔使用回调,如下所示:

代码语言:javascript
复制
//main server.js
if(foobar) foobar.fooReady(foo);

//mFile.js
Foobar.prototype.fooReady = function(callback){
    setInterval( function(){
        callback();
    }, 1000);
 }

或者,如果在间隔中没有其他事情发生,它甚至会是这样的:

代码语言:javascript
复制
//mFile.js
Foobar.prototype.fooReady = function(callback){
    setInterval(callback, 1000);
 }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38690884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档