Синхронное считывание необходимо, когда вы должны быть уверены, что все данные доступны до продолжения. И вам необходимо сохранить последовательность в порядке. Другими словами, если вам НЕОБХОДИМО заблокировать процесс и не удается сделать что-либо еще (для кого-либо), например, при запуске сервера (например, чтение файлов сертификатов для HTTPS).
Синхронное считывание может быть желательно в другое время, чтобы сохранить кодирование проще, чем предложил Лен. Но тогда вы торгуете простотой с производительностью, как вы предлагаете. Фактически, в этом случае лучше использовать одну из многих вспомогательных библиотек секвенирования. Это значительно упрощает ваш код, заботясь о вложенных обратных вызовах и проблемах с последовательностью.
И, конечно, код, который вы приводите в качестве примера, довольно опасен - что происходит, если чтение не выполняется?
Вот 3 из библиотек:
- Streamline.js Позволяет писать асинхронной JS/CoffeeScript, как если бы это были синхронизации. Просто замените обратные вызовы на «_». НО вы либо должны скомпилировать свои сценарии, либо запустить их через загрузчик.
- async - похоже, о лучших продуманы и задокументированы и рекомендуется несколькими людьми, которые создали приложения реального мира.
- async.js - змеевидных, выставляет фс, а также (включает в себя READDIR, walkfiles, Glob, abspath, копировать, гт - ориентированный на фс, а не общий
Эта ссылка может также использоваться: The Tale of Harry - Объяснение как мифический программист переходит от традиционного программирования к основанному на обратном вызове & шаблонам, которые он использует, а также полезному пониманию шаблонов, представленных в асинхронной библиотеке.
Нет такой вещи, как «try-to-make-everything» -async ". Вы всегда используете инструменты, которые вам удобны в данный момент. – freakish