2016-04-19 3 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() я хочу иметь выход, который находится в переменной config. Проблема теперь, когда я хочу зарегистрировать тест переменной, я получаю undefined.

Если I console.log (config) вместо конфигурации возврата; он работает отлично. Кажется странным.

Результат, когда я хочу использовать его, как varia.getConfig() => вывод конфигурации.

+0

Где находится переменная 'test', которую вы упомянули? –

+0

@HugoWood, что не нужно на самом деле. это просто, где вы видите obj.getConfig(). then (function (config) {console.log (config);}, который должен отправить response.send (config)). Но мне нужно сначала вернуть возвращаемое значение конфигурации –

+0

Извините, я не понимаю. Не можете ли вы ответить 'response.send (config)' внутри обратного вызова в строке 7 'test.js'? –

ответ

1

тест есть только сверху функция не снаружи. Вы можете попробовать что-то подобное, но это может быть грязно.

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

. Тест переменной не нужен tbh. Только попытался исправить ее таким образом: P Нет ли другого способа вместо определения это переменная? Нельзя ли вернуть ее в export.getConfig()? –

+0

Вы можете сделать это. Это должен быть лучший способ. –

+0

Я обновил основное поле. Как я могу отправить то все равно результат export.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 с помощью Express, вы можете сделать это:

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

Y Это близко к моему решению, я думаю. Я получаю это сейчас в моем загрузочном узле –

Смежные вопросы