So, i tried multiple solutions here to wait for api response inside for loop, but each time my loop isn't waiting for that api and is rendering page without data. Here is some code
let data = [];
const promises = [];
let count = 0;
const files = req.files;
files.forEach(function (file) {
optSettings.file = file.path;
const promise = cheetaho.optimizeUpload(optSettings, (err, response) => {
if (err) {
console.log(err);
reject(err);
} else {
data.push(response);
fs.unlink(file.path, (err) => {
if (err) {
console.log(err);
}
});
count++;
resolve();
}
});
console.log(promise);
promises.push(promise);
});
Promise.all(promises).then(() => {
console.log(data);
res.render("index", {
rendered: true,
imageData: data,
name: files[0].originalname,
});
});
Question is how can i wait for that response, push that response to data array and after all render index?
Thank you in advance.