我的範圍有些問題,我在這裏不太理解。我有以下示例代碼:節點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?您的承諾也不會在成功時返回結果。 –
對不起,編輯,以嘗試給它更多的意義 –