Упрощенное описание. Есть массив объектов (пусть objs), у которых есть поля a и b. Есть функция func, которая принимает значение поля a и возвращает промисс с некоторым результатом x, вычисленном на основе а. Есть массив промиссов arr. Формируется так.
var arr = [];
for(var i=0; i<objs.length; i++)
{
arr.push(func(objs[i][a]));
}
Далее идет параллельный вызов всех промисов из массива arr
Promise.all(arr);
Задача: навесить then не на выполнение всех промиссов arr, а на каждый по отдельности. В каждом then обработать выполнение конкретного промиса и самое главное каким-то образом восстановить по значению x, к какому объекту из objs[cur] он принадлежит и использовать значение objs[cur][a]. По второй части части подозреваю, что весь объект надо прокидывать, но загвоздка в том, что нельзя менять функцию func, которая работает относительно поля a объекта
UPD. Как отслеживать выполнение каждого промиса кажется уже сам надумал. Написать внешнюю функцию f(a), принимающую значение objs[...][a] и возвращающую промис. А массив тогда заполнять примерно так:
var arr = [];
for(var i=0; i<objs.length; i++)
{
arr.push(f(objs[i][a])).then(
function(result)
{
//обрабатываем результат ...
}
));
}
Пока на уровне соображений, запрогать смогу чуть позже. Если тут все верно, остается вторая часть вопроса.