Ладно, ребята,
Пока я готовил небольшой пример, я заметил свою глупую ошибку ... среднее значение не должно вычисляться в цикле ... в противном случае среднее значение вычисляетсяснова и снова ... Извините, похоже, мой вопрос не имеет никакого отношения к обещаниям и асинхронному программированию.По крайней мере, результат теперь в порядке, и я пока не чувствую ничего асинхронного поведения;)
Я все равно благодарю вас за желание помочь мне.Тем не менее ваши предложения помогли мне взглянуть на вещи с другой точки зрения и не зацикливаться на этих обещаниях.
function somefunc(obj) {
let temp = {};
let tempuserlist = [];
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
if(!obj[key].hasOwnProperty("userlist")) {
somefunc(obj[key]);
}
obj[key].userlist.forEach(function(element) {
if (!temp.hasOwnProperty(element.name)){
tempuserlist.push(temp[element.user] = { user: element.user});
temp[element.user].resultlist = [];
temp[element.user].val= 0;
} temp[element.name].resultlist.push(element.val);
});
}
}
for (const user in tempuserlist) {
tempuserlist[user].val= Math.round(tempuserlist[user].val/ tempuserlist[user].resultlist.length);
}
obj.userlist = tempuserlist;
}