Хорошо, кроме того, что это очень специфический вопрос, помогающий очень конкретному человеку, я хотел бы перенести это в другое место, которое также могло бы устранить вашу проблему и, возможно, помочь другим.
Поскольку вы не указываете, почему вы проходите этот процесс, мне придется разбить его и угадать - и предоставить решение для каждой угаданной идеи.
1. (Браузер) Вы пытаетесь использовать JavaScript для обработки данных и предоставления пользователю результата
Загрузка на веб-страницу не менее нескольких мегабайт необработанных данных (« некоторые из этих объектов имеют 5–10 миллионов символов») для обработки и отображения результата далеко не оптимальна, возможно, вам следует это сделать операция на стороне сервера и загрузка предварительно рассчитанного результата.
Кроме того, независимо от того, что вы делаете, JavaScript не поддерживает потоки.
setTimeout(1, function() { JSON.stringify(data); });
не должно сильно отличаться от того, что вы делаете.
2. (Браузер) Вы пытаетесь отобразить загруженный контент
Вы должны попытаться загрузить меньшие порции вместо всего содержимого в 10 и более миллионов символов, используя встроенный метод JSON.stringify.
3. (Без браузера) Вы пытаетесь использовать JavaScript для приложения, требующего многопоточности
Вам следует рассмотреть возможность использования другого языка программирования для этого приложения.
В итоге
Я думаю, что вы взбираетесь не на ту гору, вы можете достичь того же, обходя ее, не потея. Если вы хотите подняться на гору для ударов ногами, есть горы, которые нуждаются в этом, но это не эта.
Перевод: Работайте над архитектурой, чтобы устареть препятствие вместо того, чтобы пытаться его решить, если вы хотите решить проблему, есть проблемы, которые требуют решения - но не это.