2016-04-12 73 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