2016-04-12 16 views
0

Verilen bir js dosyasındaki işlevlere erişmeye çalışıyorum. Ben gibi bir parametre olarak api göndermek bilegerekli işlevler arasında kapsamlar gerektirir

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

Ben bu dosyadan işlevleri çağırmak ancak diğer var işlevlerle iç edebilirsiniz: yüzden benim ana app.js dosyasının en üstünde böyle bu dosyayı gerektirir

/** 
* @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. 

ben yinelemeli bu gerektirecek istemiyorum ama kapsam dışında olmadan benim getData işlevi içinde bu gereklidir. Geri dönüşümü nasıl kullanacağımı bilmiyorum. Birisi, geri çağırma işlevini nasıl kullanacağını ve aynı anda harici apis.js işlevlerinden nasıl işlev alabileceğini açıklayabilir mi?

+0

Eğer 'require' çağrısına gelen' .js' çıkarırsanız aynı sorun alır mıyım? Ve bu kodun tamamı "app.js" içinde mi? – csum

+0

Bunu yaparken bir sorun görmüyorum. Bu davranışı neden aldığınızı anlamak için daha fazla bilgiye ihtiyacımız var. GetData işlevinin ve api.js modülünün uygulanmasını sağlayabilir misiniz? – jahnestacado

cevap

2

Örneğinizde getData işlevindeki geri arama işlevi içinde, api değişkeni, geri bildirimin kendi api parametresi tarafından geçersiz kılınmaktadır. Yani en azından erişmek istiyorsanız ona benzersiz bir ad vermek gerekir api Eğer require ed:

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

Nedenini bilmiyorum, ama api.dostuff() getData içinde çalışmaz, hata gösterilmediğinden emin olun. GetData dışında aynı işlev çağrısı kullanırsanız, beklendiği gibi çalışır. Bu, senkronize bir işlevi çağırdığım için mi? – staminna

+0

Kodu görmeden söylemek zor. Geriçağırım işlevi içerisindeki herhangi bir şey gerçekleştiriliyor mu? 'GetData' işlevinin geri aramayı çağırdığından emin olun. Yeni bir soru başlatmak ve bağlantı kurmak istiyorsanız buraya bir göz atacağım. – csum

İlgili konular