На моем сервере узлов у меня есть следующий код, использующий mysql для выполнения запросов
query('select id from client where cat=12')
.then((result)=>{
details = result.results;
details.forEach(element => {
user.getInfo(element.id)
.then((result)=>{
console.log('results are ',result) ;
myArray.push(result);
if(myArray.length == details.length){
return myArray;
}
})
});
})
.then((result)=>{
console.log('check',result) ;
//.......
Лог c этого равен
возьмите несколько идентификаторов и для каждого запустите функцию, которая находится в другом файле (user.getInfo
часть) pu sh каждый результат функции в массив (myArray), если длина myArray равна длине деталей , это означает, что не осталось никаких элементов, поэтому мы можем вернуться к следующему then
Проблема в том, что user.getInfo
занимает некоторое время, и я думаю, что из-за user.getInfo(element.id).then
он возвращается к последний, затем сразу, и я вижу сначала 'check',undefined
, а затем вижу results are
с результатами
Я бы хотел, чтобы user.getInfo
ожидал результатов и go до следующего, только когда у него есть данные.
Как я могу это сделать?
Спасибо