2016-04-12 35 views
0

我想从导出的js文件访问功能。 等我的主要app.js文件顶部我需要这个文件是这样的:要求范围之间所需的功能

var api = require("./plugins/apis.js”); 

我可以调用函数从该文件而不是内部的其他变种 功能,就算我送的API像参数

/** 
* @param access_token your access token from your instance settings page 
* @param [options] json object to be passed to the external web service. Can include any of 'context', 'verbose', 'n' 
* @param callback callback that takes 2 arguments err and the response body 
*/ 


var getData = function (access_token, options, callback) { 
    if(!callback) { 
     callback = options; 
     options = undefined; 
    } 
// do stuff 
} 

function init(api) { 
    var information = getData(ACCESS_TOKEN, function (err, res) { 
     init(api) 
     // do stuff, but calls from apis.js functions not available. 

我不想要这个递归,但我需要这里面我的getData函数,而不是超出范围。 我不知道如何使用回调。有人可以解释如何使用回调函数,并且可以同时使用外部apis.js函数中的函数吗?

+0

你得到,如果你从调用'require'删除'.js'同样的问题?这是'app.js'里面的所有代码吗? – csum

+0

我没有看到这样做的问题。我们需要更多的信息才能理解你为什么会得到这种行为。你能提供getData函数和api.js模块的实现吗? – jahnestacado

回答

2

在getData的示例回调函数中,api变量被回调自己的api参数覆盖。所以,你会至少需要给它一个唯一的名称,如果你要访问的apirequire编辑:

var api = require("./plugins/apis”); 

var information = getData(ACCESS_TOKEN, function (err, res, _api) { 
    // do stuff 
    // _api was passed here from getData() 
    // api is still the object pulled in from your call to require() 
}); 
+0

我不知道为什么,但api.dostuff()在getData中不起作用,但没有显示任何错误。如果我在getData之外使用完全相同的函数调用,它将按预期运行。这是因为我在调用同步函数吗? – staminna

+0

没有看到代码就很难说。回调函数中的任何内容是否被执行?确保你的'getData'函数调用回调。如果你想开始一个新的问题,并在这里链接到它,我会看看。 – csum