В чем разница асинхронного и синхронного метода(nodejs javascript)?
Я что-то запутался в понятиях. Так как язык javascript событийный, то все выполняется синхронно, но чтобы дождаться выполнения, например, промиса, мы используем синтаксический сахар async/awayt - т.е. выполняем что-то асинхронно, а затем продолжаем выполнение скрипта.
Следовательно, что-то асинхронное приостанавливает выполнения остального скрипта.
И тут в nodejs:
fs.readFileSync
fs.readdirSync
В названии не Async, а Sync, и в документации написано, что это синхронные функции, но почему они тоже останавливают выполнение остальной части скрипта? Если они синхронные, я что-то не пойму?
Не смотря на то, что "синхронно" в русском языке это синоним слова "одновременно" в программировании это вызывает путаницу, потому что именно ВЫПОЛНЕНИЕ кода будет противоположно этим понятием. "Синхронный" код будет выполняться неодновременно, а "асинхронный" наоборот одновременно. А суть в том, что когда говорят про "синхронность-асинхронность" кода речь идет не о его ВЫПОЛНЕНИИ, а о его ПОВЕДЕНИИ. То есть речь идет о связке ОТВЕТ-ЗАПРОС. Любая функция в коде это запрос и этот запрос ждет ответ. Вот и получается, что в синхронном коде ответ будет синхронизирован с запросом, то есть код будет ждать ответ на ваш запрос и не выполняться дальше, и именно по-этому он будет называться синхронным. При асинхронном поведении после вашего запроса код не будет ждать ответа и будет называться асинхронным.
смысл в том, что обычный синхронный код выполняется последовательно строчка за строчкой в основном потоке, а асинхронный код откладывается в очередь задач и выполняется после того, как выполнится синхронный код.
а эти fs.readFileSync и прочие содержат приписку Sync, как бы намекая, что эти методы могут быть долгими (например, большой файл читать надо) и весь остальной код их будет ждать, что не хорошо для серверного кода, с другой стороны вполне себе замечательно для служебных скриптов, когда ожидается, что такой скрипт будет запущен одним клиентом