Существуют ли утечки памяти при рекурсивном вызове функции JavaScript в функции обратного вызова?

Допустим, например, что вы пишете программу, которая ожидает сообщения в очереди, обрабатывает его, а затем ожидает следующего сообщения, и это продолжается вечно. На языке, подобном C или Java, это будет выглядеть примерно так:

void processMessage() {
    while (true) {
        // waitForMessage blocks until the next message is received
       msg = waitForMessage(); 
      // handle msg here
    }
}

В Javascript (я использую node.js, кстати), поскольку используются обратные вызовы, обычно это выглядит так:

function processMessage() {
    waitForMessage(function(msg) {
        // handle msg or error here
        processMessage();
    }); 
}

Меня беспокоит то, что у вас в основном есть цепочка обратных вызовов, которые рекурсивно вызывают исходную функцию, и это может привести к потере памяти. Я предполагаю, что это на самом деле не проблема, так как, возможно, обратные вызовы JavaScript существуют в их собственном стеке независимо и не помещаются в стек исходных функций? Кто-то объясняет мне обратные вызовы javascript и область видимости и уверяет меня, что код javascript не будет исчерпан из памяти при запуске в течение сколь угодно длительного промежутка времени при получении сколь угодно большого количества сообщений

Ответы на вопрос(0)

Ваш ответ на вопрос