Старался все, чтобы это работало, в частности, асинхронный каждый метод. for (константный элемент resultsHistory) также не работает.
Я пытаюсь изменить массив результатов из предыдущего запроса, выполнив над ним foreach и выполнив запрос mysql.
Однако для этого нужно дождаться завершения запроса.
Есть ли способ получить доступ к этим результатам без setTimeout (function () {}, которую я поставил вручную, чтобы дождаться завершения запроса?
function getUserLikes(params, callback) {
var usersArrayCat = [];
console.log(`length of array ${params.length}`)
// 1 here means 1 request at a time
async.eachLimit(params, 1, function (element, cb) {
element.liked = 0;
var queryLiked = `SELECT * from users_likes WHERE user_id = \"${req.body.userid}\" AND product_id = \"${element.product_id}\"`;
connectionPromise.query(queryLiked, function (err, result) {
if (!result) {
} else if (result.length == 0) {
} else {
element.liked = result[0].userlike;
usersArrayCat.push(element);
// console.log(usersArrayCat);
cb();
}
})
}, function (err) {
if (err) return callback(err);
callback(null, usersArrayCat)
});
};
getUserLikes(resultsHistory, function (e) {
console.log(e);
});
if(!res.headersSent) {
setTimeout(function() {
res.send(JSON.stringify({"status": 200 ,"error": null, "top3":resultsHistory}));
}, 150);
}