Немного трудно понять, каково ваше полное окружение. Когда я запускаю этот код:
const waitFor = (ms) => new Promise(r => setTimeout(r, ms));
async function asyncForEach(array, callback) {
console.log('async function')
for (let index = 0; index < array.length; index++) {
await callback(array[index], index, array);
}
}
let controlClients = [1,2,3,4];
function test() {
console.log('stdout')
return asyncForEach(controlClients, async (num) => {
await waitFor(50);
console.log(num);
});
}
test().then(() => {
console.log("done");
}).catch(err => {
console.log(err);
});
Я получаю этот вывод:
stdout
async function
1
2
3
4
done
Надеюсь, вы можете взять это за отправную точку и выяснить, что происходит не так в вашей конкретной среде. Обратите внимание, что вы всегда должны иметь .catch()
практически для любой операции, которая включает обещание, чтобы вы могли видеть, есть ли какие-либо ошибки в вашей цепочке обещаний.
И, так как вы не показываете свой код сокета, поэтому я не могу воспроизвести его часть, я упростил просто запустить остальную часть кода один раз в небольшом тестовом приложении.