function getSitemapURLs( file ) {
var urls = [];
fs.readFile( file, ( err, data ) => {
if ( err ) throw err;
parser.parseString( data, ( err, result ) => {
result = result.urlset.url;
for ( var i = 0; i < result.length; i++ ) {
urlObj = result[i];
for ( var key in urlObj ) {
if ( 'loc' != key) continue;
// TODO: Improve how this key is accessed. Brittle.
urls.push(urlObj[key][0]);
}
}
});
});
return urls;
}
Я запускаю getSitemapURLs из другого файла после запроса метода.Если я console.log( urls )
из закрытия parseString
, он возвращает ожидаемое значение, массив URL-адресов.
В настоящее время при вызове этого из индекса возвращается пустой массив.Похоже, это проблема, которую я создал.Может ли кто-нибудь помочь мне правильно определить это, чтобы я мог вернуть массив URL-адресов?
Вот так выглядит мой файл index.js, файл, из которого он вызывается:
// Utility Methods
const getDomainParts = require('./utility/sitemap.js').getDomainParts,
setSitemap = require('./utility/sitemap.js').setSitemap,
getSitemapURLs = require('./utility/sitemap.js').getSitemapURLs;
// Site Vitals
// Actual URL kept out of StackOverflow for privacy
const baseUrl = 'https://www.xyzurl.com';
const directory = getDomainParts( baseUrl );
// Init Tests
( async () => {
const sitemap = setSitemap( baseUrl, directory );
await sitemap;
const urls = getSitemapURLs(`./sites/${directory}/sitemap.xml`);
console.dir( urls );
} )();