Как и зачем использовать
#nodejs_api
С 16.4 версии Node.js AsyncLocalStorage перестал быть экспериментальным, а значит его можно смело использовать в продакшене. Данный класс позволяет сохранять контекст между шагами асинхронного флоу. Он работает и с callback, и с promise chain.
Для получения текущего значения используется
Возможное использование данного апи – улучшение логгирования. В стейте храниться traceId, который пишется в лог. Так вы легко можете различить логи от нескольких запросов, которые параллельно обрабатываются #nodejs.
Статья с примерами использования из комментариев.
Пример для Nest.js.
AsyncLocalStorage?#nodejs_api
С 16.4 версии Node.js AsyncLocalStorage перестал быть экспериментальным, а значит его можно смело использовать в продакшене. Данный класс позволяет сохранять контекст между шагами асинхронного флоу. Он работает и с callback, и с promise chain.
Для получения текущего значения используется
asyncLocalStorage.getStore()
Для установки значения есть два способа:asyncLocalStorage.run(store, callback[, ...args]) – устанавливает значение внутри callback. Для использования скорее всего потребуется внести изменения на верхнем уровне кода.asyncLocalStorage.enterWith(store) – устанавливает значение до окончания текущего синхронного контекста и всех порождающих асинхронных операций. Проще в использование, но возможность его вызвать несколько раз создает сложности в поддержки. Мутировать стейт это плохо. Поэтому документация рекомендует использовать run.Возможное использование данного апи – улучшение логгирования. В стейте храниться traceId, который пишется в лог. Так вы легко можете различить логи от нескольких запросов, которые параллельно обрабатываются #nodejs.
Статья с примерами использования из комментариев.
Пример для Nest.js.
👍1
Как использовать Node.js REPL?
#nodejs_api
REPL расшифровывается как read–eval–print loop. Для запуска #nodejs в таком режиме достаточно выполнить
Работа с REPL очень похожа на работу с Console Panel в Google Chrome:
- пишешь JS код, его результат выводиться в консоль
- Cmd + K on MacOS / Ctrl + L on Windows – очистят консоль
Но есть и различия:
- Переменная _ хранит значение последней команды
- Есть команды начинающиеся с точки. Полный перечень .help
- Чтобы выйти из REPL используйте горячую клавишу Ctrl+D или Ctrl+C дважды
При желание можно написать свой REPL. Например для работы с API или базой данных, как это сделано для MongoDB. Подробней в документации.
#nodejs_api
REPL расшифровывается как read–eval–print loop. Для запуска #nodejs в таком режиме достаточно выполнить
node без указания файла.Работа с REPL очень похожа на работу с Console Panel в Google Chrome:
- пишешь JS код, его результат выводиться в консоль
- Cmd + K on MacOS / Ctrl + L on Windows – очистят консоль
Но есть и различия:
- Переменная _ хранит значение последней команды
- Есть команды начинающиеся с точки. Полный перечень .help
- Чтобы выйти из REPL используйте горячую клавишу Ctrl+D или Ctrl+C дважды
При желание можно написать свой REPL. Например для работы с API или базой данных, как это сделано для MongoDB. Подробней в документации.