Я относительно новичок в node.js и javascript в целом. В частности, меня смущают обещания и async / await. Я пытаюсь асинхронно запрашивать изображения с удаленного URL-адреса и преобразовывать их в base64. Может кто-нибудь объяснить, что не так с моим кодом ниже?
function loadAsync(image){
return new Promise(function(resolve,reject){
request({url: image, encoding: null}, function (err, res, body) {
if (!err && res.statusCode == 200) {
let base64prefix = 'data:' + res.headers['content-type'] + ';base64,'
let image = body.toString('base64');
let complete = base64prefix + image;
resolve(complete)
} else {
return reject(err);
}
});
});
}
async function getImagesAsBase64(images){
let promises = [];
images.forEach(image =>{
promises.push(loadAsync(image).then(results =>{
return results;
}));
});
const imagesAsBase64 = await Promise.all(promises);
return imagesAsBase64;
}
//Following returns Promise{<pending>} when given an array of images
console.info(getImagesAsBase64(images));



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Глупый, мне нужно было await результат, выполнив
let imagesAsBase64 = await getImagesAsBase64(images);
console.info(imagesAsBase64);
Кстати, вам не нужен обратный вызов then() с return results. Вы могли бы просто сделать promises.push(loadAsync(image))
вы можете переписать свою вторую функцию как
async function getImagesAsBase64 (images) { return Promise.all(images.map(loadAsync)) }