У меня нет конкретной проблемы, но я хотел бы получить мнение от других о моих собственных сомнениях. Я не продвинутый разработчик, поэтому, если я говорю глупо или совершенно неправильно, не стесняйтесь меня исправлять и нести со мной, я здесь, чтобы учиться.Использование для асинхронного программирования (NodeJS)
Я недавно использовал NodeJS, и, конечно, большая часть моего кода написана асинхронно. Тем не менее, я подумал о нескольких вещах:
Мне труднее написать читаемый код, с потоком, который легко рассуждать, когда я написал асинхронный код, а не синхронный. Я также часто получаю много вложенных обратных вызовов. Позже я узнал о обещаниях, и я думаю, что это улучшает все, но даже с обещаниями я чувствую, что код, который я пишу, по-прежнему трудно поддерживать и подвержен ошибкам.
Я также понял, что много времени я предпочитаю делать синхронные вызовы, но я более или менее вынужден использовать асинхронные вызовы, потому что библиотеки предоставляют только асинхронные интерфейсы. Например, очень часто мне нужно получить данные из базы данных и в конечном итоге написать асинхронный код для запроса базы данных, или в другой ситуации мне нужно сделать запрос на сервер (например, чтобы получить токен для использования сторонней службы), но во всех этих ситуациях мне нужно получить данные (будь то данные из db или токена или что-то еще) перед отправкой собственного ответа, поэтому мне нужно подождать. Но я в конечном итоге вынужден писать асинхронный код, в то время как я чувствую, что синхронный код будет более естественным и более читаемым.
Я знаю, что с NodeJS я не должен блокировать основной поток синхронными вызовами, поэтому кажется, что асинхронное программирование - единственный способ пойти. Но я хотел бы знать, должен ли я просто отказаться от NodeJS и пойти на что-то еще, что позволит мне написать синхронный код, или если что-то, что я пропустил в NodeJS.
I/O практически всегда асинхронен. Даже если вы можете сделать это синхронно, он не будет масштабироваться. Представьте, что веб-браузер был однопоточным и выполнял синхронный ввод-вывод. Я не смог бы использовать браузер во время загрузки файла (даже не говоря о том, как медленная и безответственная загрузка сайта будет). Что делать, полностью зависит от того, что вы строите. Но привыкание и обучение асинхронному программированию, безусловно, будет более полезным. –
@ Можете ли вы, пожалуйста, показать некоторые из вашего кода, который вам трудно читать? –