Не разбирам защо
client.smembers
иclient.get
(Проверките на Redis) трябва да бъдат обратни извиквания, а не просто изявления – това прави живота много сложен.
Това е Node. (Сигурен съм, че тази тема е обсъждана повече от достатъчно пъти тук, прегледайте други въпроси, определено я има)
Как мога да съм сигурен, че всички търсения са извършени, преди да извикам
socket.broadcast
?
Това е err
за във функция за обратно извикване. Това е стандарт на Node - първият параметър в обратното извикване е обект на грешка (null
ако всичко е наред). Затова просто използвайте нещо подобно, за да сте сигурни, че няма грешки:
if (err) {
... // handle errors.
return // or not, it depends.
}
... // process results
Но това изглежда много объркано.
Ще свикнеш. Всъщност намирам за хубаво, когато кодът е добре форматиран и проектът е умело структуриран.
Други начини са:
- Използване на библиотеки за управление на асинхронния кодов поток (Async.js, Step.js и др.)
- Ако кодът в стил спагети е това, което смятате за бъркотия, дефинирайте някои функции за обработка на резултатите и ги предайте като параметри вместо анонимни.