10 често срещани грешки при разработване на

Въпреки това, част от кода, която заема процесора, може да блокира цикъла на събитията, принуждавайки хиляди свързани клиенти да изчакат изпълнението им да завърши. Пример за такъв код е опит за сортиране на много голям масив:
Извикването на функцията sortUsersByAge е малко вероятно да създаде проблеми с малък масив. Но когато работите с голям масив, това драстично ще намали цялостната производителност. Проблеми може да не възникнат, ако операцията е крайно необходима и сте сигурни, че никой друг не чака цикъла на събитието (да речем, ако правите инструмент за команден ред и не е необходимо да изпълнявате асинхронно). Но за сървър Node.js, обслужващ хиляди клиенти едновременно, този подход не е валиден. Ако този масив от потребители се извлече директно от базата данни, тогава най-доброто решение би било да се извлече вече сортиран. Ако цикълът на събитията е блокиран от цикъла за изчисляване на общия резултат от голям брой финансови транзакции, тогава тази работа може да бъде делегирана на някой външен изпълнител, за да не блокира цикъла на събитието.
За съжаление за този тип проблеми няма сребърен куршум и всеки случай изисква индивидуален подход. Основното нещо е да не претоварвате процесора като част от изпълнението на екземпляр Node.js, който работи паралелно с няколко клиента.
За да избегнете тази грешка, достатъчно е да сте бдителни. Някои разработчици са взели за правило да добавяте ключовата дума „return“ преди всяко обаждане с обратно извикване:
В много асинхронни функции възвръщаемата стойност не е важна, така че този подход често избягва извикването на обратно повикване няколко пъти.
Този проблем често се нарича "Ад за обратно обаждане". Макар че това не е грешка сама по себе си, тя може да накара кода бързо да излезе извън контрол:

Когато се извика функцията „testTimeout“, първо ще се покаже „Begin“, след това „Waitng“ и след около секунда - „Done!“. Ако трябва да се направи нещо след извикване на обратното повикване, то то трябва да бъде извикано в самия обратно повикване.
Node.js третира всеки файл като малък изолиран модул. Да приемем, че вашият пакет съдържа два файла a.js и b.js. За да може b.js да има достъп до функционалност от a.js, последният трябва да експортира тази функционалност, като добави свойства към обекта "износ":