в моем файле 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);
Но всегда возвращает неопределенное! Консоль.log в getUrl() показывает хорошее значение. Похоже, что экспорт не ждет загрузки функции getURl. Каков наилучший способ решить эту проблему? В этом примере я удалил все ненужные части кода.
Правильно, 'readFileSync' является асинхронным. Вы можете либо обойти это, и, так как вы не разместили код, который вызывает 'getFile', мы бы понятия не имели, как вы это сделаете, или вместо этого вы можете использовать синхронный' readFile'. – adeneo
Возможно, используйте 'readFile' вместо' readFileSync': http://stackoverflow.com/a/22863818/6429774 – Phil
Вы должны определить переменную 'resetUrl' в' functions.js' –