-
Отключить режим Quick edit в окне Properties терминала (см. скриншот ниже)
Использовать другой терминал (например, git bash)
Запускать nodejs через Task Scheduler операционной системы.
28 янв. 2022 г.
Зависание nodejs при запуске через окно терминала Windows
26 янв. 2022 г.
Шрифт MS Sans Serif для кирилической кодировки Win-1251
20 янв. 2022 г.
Ровно в следующий четверг, 27 января, нам исполняется 28 лет! Традиционный боулинг, как обычно, в 19:00 в клубе Мэдисон. В ЧЕТВЕРГ! Будем рады видеть всех наших сотрудников! Как действующих, так и бывших.
🎳
Различие в поведении finally между Delphi и Javascript
Пришлось потратить пару дней в поисках трудновыявимой ошибки. Все дело в том, что finally работает в Delphi и NodeJS по-разному. Будьте осторожны.
Например, в Делфи, код в секции finally выполнится ПЕРЕД окончанием выполнения функции:
В Javascript, код в секции finally (даже не смотря на наличие await) выполнится уже ПОСЛЕ того как результат функции будет передан получателю.
Теперь представим такую ситуацию. На веб сервер посылается сначала запрос на изменение данных, а после его выполнения запрос на получение (перечитывание) данных. Если мы будем делать commit транзакции в секции finally, то возможна такая ситуация, когда первый запрос уже завершится и вернет результат на клиента, который, в свою очередь, выполнит второй запрос к серверу, а транзакция все еще будет не подтверждена. В этом случае клиент получит старые данные, не соответствующие тому, что находится в базе данных.
Выход в данном случае или комитить транзакцию до секции finally, или использовать мьютекс на несколько обработчиков, который не даст прочитать данные, пока не запишется транзакция, которая меняла эти данные.