Как сказал @Mark_M, у вас есть асинхронный код, поэтому вы должны создать систему обратного вызова для доступа к заголовкам, когда все вызовы readTitle
завершены.
Это рекурсивный способ, которым вы можете использовать:
function getTitleArray(addresses, callback) {
var titles = [];
if (addresses.length > 1) {
let syncCallReadTile = function (it = 0, callback) {
let url = addresses[it];
if (url.indexOf('http://') == -1) {
url = 'http://' + url;
}
readTitle(url).then((title) => {
titles.push(title);
it++;
if (it == addresses.length) {
callback(null, titles);
}
else {
syncCallReadTile(it, callback);
}
}, callback);
};
syncCallReadTile(0, callback);
}
}
getTitleArray([], (err, titles) => {
if (err) {
res.status(400).send(err);
}
else {
console.log("Title :", titles);
}
})