Я полагаю, что вы говорите об операциях, которые могут пройти неопределенное количество времени, таких как запрос HTTP или доступ к файловой системе.
Узел дает вам метод для выполнения этих операций в асинхронном режиме, что означает, что вы можете указать узлу или библиотеке сторонних разработчиков для запуска операции, а затем вызвать некоторый код (определяемую вами функцию), чтобы сообщить вам когда операция завершена. Это можно сделать через прослушиватели событий или функции обратного вызова, оба из которых имеют свои собственные ограничения.
С прослушивателями событий максимальное количество слушателей, которое вы можете получить, зависит от максимального размера массива вашей среды. В случае node.js механизм javascript равен v8, но согласно this post максимальный уровень, установленный 5-м стандартом ECMA в ~ 4 миллиарда элементов, который является пределом, которого вы никогда не должны преодолевать.
С обратными вызовами ограничение, которое у вас есть, - это максимальный размер стека вызовов, что означает, насколько ваши функции могут звонить друг другу. Например, вы можете иметь обратный вызов, вызывающий обратный вызов, вызывающий обратный вызов, вызывающий другой обратный вызов и т. Д. Размер стека вызовов определяет, как могут быть обратные вызовы, вызывающие обратные вызовы, которые вы можете иметь. Обратите внимание, что размер стека вызовов может быть ограничением с помощью прослушивателей событий, а также, по сути, это обратные вызовы, которые могут выполняться несколько раз.
И это ограничения с каждым.
Я не думаю, что есть предел, но ваша оперативная память. – Bergi
Я считаю, что события на самом деле всегда поставлены в очередь. – jcaron
Я не думаю, что это так, как очередь событий обрабатывается –