я же говорю: разберись сначала в однопоточном языке, а потом суйся в многопоточное. или возьми другой язык под задачу.
promise.all:
1) ничего не запускает. он лишь ждет завершения промисов, а потом возвращает массив из тех результатов, которые вернули промисы.
2) про воркеры он ничего не знает. и в один поток он их не объединяет. он, опять же повторю, ничего вообще не знает про воркеры, потоки, процессы — он только с промисами работает.
код, который ты прислал. делает следующее:
*
items.map создает (а промисы запускаются сразу при создании) кучу промисов.
* каждый промис передает задачу в пул и ждет завершения задачи. затем пишет "finished {i}"
* пул берет свободный воркер и запускает в нем задачу, ожидая ее выполнения.
* promise.all при этом лишь ждет завершения всех промисов
можешь вот так изменить код и получишь результаты работы воркеров
Promise.all(
items.map(async (_, i) => {
const result = await pool.run(() => ({ i }));
console.log('finished', i);
return result;
}),
)
.then((res) => {
console.log('finished all');
console.log(res);
})