我有以下代码
function getPNOP(callback){
var result = result;
connection.query('SELECT DISTINCT pnop FROM MASTER1', [], function(err, result){
if(err){
console.log(err);
}
callback({result: result[0].pnop});
});
}
var PNOP;
getPNOP(function(resultsObject){
var PNOP = resultsObject.result;
exports.PNOP = PNOP;
console.log(resultsObject.result)
})
console.log("Line 233 - PNOP updated : "+PNOP +CurrTime);
我能够在“console.log(resultsObject.result)”行中获取PNOP的值,但是在下一个控制台日志行中它将以未定义的形式出现。
要了解如何在函数外部使用导出值,我尝试在上面的代码下面添加以下行:
var myModule = require.('getPNOP');
var PNOP = myModule.PNOP;
但这不起作用......
关于在getPNOP函数之外获取PNOP变量值应该做些什么的任何建议?
答案 0 :(得分:0)
JavaScript是同步的,它将以这种方式运行您的代码。
您的代码将按以下顺序执行
PNOP
变量。在此阶段undefined
。{/ li>
getPNOP()
。console.log(...)
。 PNOP
仍为undefined
。PNOP
,并为其指定resultsObject.result
的值。将记录PNOP
值的代码移动到回调函数中,或将其包装在一个帮助您运行异步代码的promise中,就好像它是同步的一样,如下所示。
function getPNOP(){
return new Promise(function(resolve, reject){
var result = result;
connection.query('SELECT DISTINCT pnop FROM MASTER1', [], function(err, result){
if(err){
reject(err);
}
resolve(result[0].pnop);
});
});
}
getPNOP().then(function(PNOP){
console.log("Line 233 - PNOP updated : "+PNOP +CurrTime);
}).catch(function(err){
console.log("An error occured");
});