我的范围有些问题,我在这里不太理解。我有以下示例代码:节点JS范围
/**
* Created by David on 10/9/2016.
*/
var public = {};
//REQUIRES
var fs = require('fs');
var rl = require('readline');
//========================================
var configFile = './config';
public.configFile = configFile;
//========================================
public.readSettingsFile = function(conFile){
return new Promise(function(resolve,reject){
try {
console.log("Importing Settings");
//read configuration file line by line
var lineStream = rl.createInterface({
input: fs.createReadStream(conFile === undefined ? configFile : conFile)
});
lineStream.on('line', function (line) {
if(!line.startsWith('#')){
var splitLine = line.split('=');
switch(splitLine[0]){
case 'version':
public.version = splitLine[1];
break;
case 'basePath':
public.basePath = splitLine[1];
break;
}
}
resolve(public);
});
}catch(err){
reject(err);
}
});
}
//========================================
module.exports = public;
我所期望的,与上。然后,对应该返回的承诺,成功readSettingsFile后,即public.version现在应该包括在内,但它返回以下:
{ configFile: './config', readSettingsFile: [Function] }
在switch语句中的console.log正确返回:
0.1
你甚至没有调用'public.readSettingsFile'函数。当你会 - 你会发现你的readline代码是异步的。 – zerkms
你正在做的很多事情并不清楚和完整。例如,你在哪里实际调用readSettingsFile?您的承诺也不会在成功时返回结果。 –
对不起,编辑,以尝试给它更多的意义 –