отправили пост запрос через js он вернул результат только 1 раз
Это естественно. Протокол HTTP именно так и устроен: запрос - ответ. Причём ответ сначала вычисляется, а затем отправляется клиенту.
у меня работает foreach в php и при каждом завершении цикла я хочу получать результат
Как уже написано выше - сначала код полностью отрабатывает, а потом результат отправляется клиенту. Вы не можете отправить клиенту данные и продолжить работу используя HTTP.
или есть какой то обработчик получения return ?
Нет.
В итоге остаётся всего несколько решений.
1) WebSocket
2) Server Sent Events
3) Comet
Однако. Все эти решения требуют глубокой переработки вашего приложения, и просто добавить кусочек кода в имеющийся цикл не получится.