2016-04-19 65 views
1

import.js功能的函數的返回值

exports.getConfig = function() { 
    return api.getConfig(); 

}; 

test.js

// Aanmaken lightBridge 
obj = reflector.getObj(); 
console.log(obj); 

// Toon alle lichten 
obj.getConfig().then(function(config) { 
    console.log(config); 
}).done(); 

在它使用的 功能當我調用了getconfig(最後片段)我想有在變量配置中的輸出。現在的問題是,當我想記錄變量測試我收到未定義。

如果我console.log(config)而不是返回配置;它完美地工作。看起來很奇怪。

當我想要使用它的結果就像varia.getConfig()=> config的輸出。

+0

你提到的'test'變量在哪裏? –

+0

@HugoWood實際上並不需要。它只是你看到的obj.getConfig()。然後(函數(配置){console.log(config);}必須發送一個response.send(配置),但我需要有配置的返回值首先 –

+0

對不起,我不明白你能不能在'test.js'的第7行回調函數裏面加'response.send(config)'? –

回答

1

測試只存在於你的功能不在外面。你可以嘗試這樣的東西,但它可能很髒。

var test; 
    exports.getConfig = function() { 
     api.getConfig(function(err, config) { 
     if (err) throw err; 
     test = config; 
    }); 
+0

變量測試不需要tbh。只試圖修復它:P 是不是有另一種方式來代替定義它是一個變量?是不是可以將它返回到exports.getConfig()? –

+0

你可以做出承諾,它應該是更好的方式 –

+0

我已經更新了主字段。那麼仍然導致exports.getConfig?而且我需要使用它在另一個文件中用obj.getConfig();所以console.log(config)需要改成res.send(JSON.stringify(config));所以我可以將輸出發送給用戶。 –

1

聽起來就像你試圖消耗一個異步函數,就好像它是同步的。你不能這樣做。你可以做的是從getConfig返回一個承諾。

exports.getConfig = function() { 
    return api.getConfig(); 
}; 

然後你的模塊可以食用這樣的:

const myModule = require('my-module'); 
myModule.getConfig().then(function(config) { 
    console.log(config); 
}); 

從它聽起來就像你正在使用快遞的意見。如果你想用Express發送config的HTTP響應,你可以這樣做:

app.get('/config', function(request, response) { 
    myModule.getConfig().then(function(config) { 
     response.send(config); 
    }); 
}); 
+0

Y這與我的解決方案密切相關。我現在收到我的啓動節點 –