Я думаю, что ваша проблема не в том, что вы просматриваете, но вы не понимаете, как использовать обещания. Я очень рекомендую как документацию Mozilla, так и блог Дэвида Уолша . Я также рекомендую начинать с малого и писать простые обещания, прежде чем пытаться сделать что-то более сложное.
Теперь я отвечу на ваш конкретный вопрос. Причина, по которой вы не видите, что вы хотите увидеть, - это то, что все ваши бизнес-потоки являются асинхронными. Вы возвращаете обещание в конце своей функции, прежде чем перейти к оператору switch. В принципе, подумайте о обещании как целой функции. Но вместо того, чтобы возвращать значение, вы возвращаете обещание значения или ошибки. Если вы бросаете обещание в середине функции, ваша функция пытается сделать слишком много вещей, и вам нужно больше отделить ваш код.
Это должно быть ближе к тому, что вы хотите. Это не идеальный код, и он может не соответствовать вашим потребностям, но, надеюсь, он поможет вам на правильном пути. Удачи.
public.readSettingsFile = function(conFile){
return new Promise(function(resolve, reject) {
var lineStream = rl.createInterface({
input: fs.createReadStream(conFile === undefined ? configFile : conFile)
});
lineStream.on('line', function (line) {
if(!line.startsWith('#')){
var splitLine = line.split('=');
// You don't need a switch statement for only one case
if (splitLine[0] === 'version') {
public.version = splitLine[1];
console.log(public.version);
// You actually have to resolve something
resolve(public);
} else {
// There's a problem, reject it.
reject("Some error message");
}
});
}
}