在我的文件functions.js我有两个功能:等待,直到fs.readFileSync完成
var email, url1
function getFile(_callback){
email = fs.readFileSync("C:/Emails/" + items[2])
_callback(email);
}
function getUrl(){
getLatestMail(function(email) {
email.split(/\n/).forEach(function(line) {
i++;
if (i == 52) {
var test = new Buffer(line, 'base64').toString();
var regex = /=(.+?)"/g
var result1 = regex.exec(test);
url1 = result1[1].toString();
console.log(url1);
}
});
getUrl()
exports.resetUrl = url1;
,我有一个文件test.js
var Functions = require('../pageobjects/functions.js');
var test = Functions.resetUrl;
console.log(test);
但它总是返回未定义! getUrl()中的console.log显示良好的值。它看起来像导出没有等待函数getURl加载。解决这个问题的最好方法是什么?在这个例子中,我删除了所有不必要的代码部分。
这是正确的,'readFileSync'是异步的。你可以解决这个问题,因为你还没有发布调用'getFile'的代码,所以我们不知道你会怎么做,或者你可以使用同步的'readFile'来代替。 – adeneo
也许使用'readFile'而不是'readFileSync':http://stackoverflow.com/a/22863818/6429774 – Phil
你必须在'functions.js'中定义'resetUrl'变量 –