Вход/Регистрация
JavaScript. Подробное руководство, 6-е издание
вернуться

Флэнаган Дэвид

Шрифт:

process.version // Строка с версией Node

process.argv // Аргументы командной строки в виде массива, argv[0] = "node"

process.env // Переменные окружения в виде объекта.

// например: process.env.PATH

process.pid // Числовой идентификатор процесса

process.getuid // Возвращает числовой идентификатор пользователя

process.cwd // Возвращает текущий рабочий каталог

process.chdir // Выполняет переход в другой каталог

process.exit // Завершает программу (после запуска всех обработчиков)

Поскольку функции и методы, реализуемые интерпретатором Node, являются асинхронными, они не блокируют выполнение программы в ожидании завершения операций. Неблокирующий метод не может вернуть результат выполнения асинхронной операции. Если в программе потребуется получить результат или просто определить, когда завершится операция, необходимо определить функцию, которую интерпретатор Node сможет вызвать, когда результат будет доступен или когда операция завершится (или возникнет ошибка). В некоторых случаях (например, в вызове

setTimeout
выше) достаточно просто передать методу функцию в виде аргумента, и Node вызовет ее в соответствующий момент времени. В других случаях можно воспользоваться инфраструктурой событий интерпретатора Node. Объекты, реализованные в интерпретаторе Node, которые генерируют события (их часто называют источниками (emitter) событий), определяют метод
on
для регистрации обработчиков. Они принимают в первом аргументе тип события (строку) и функцию-обработчик во втором аргументе. Для различных типов событий функциям-обработчикам передаются различные аргументы, поэтому вам может потребоваться обратиться к документации по API, чтобы точно узнать, как писать свои обработчики:

emitter.on(name, f) // Регистрирует f для обработки события name,

// генерируемого объектом emitter

emitter.addListener(name, f) // То же самое: addListener - синоним для оп

emitter.once(name, f) // Для обработчиков однократного срабатывания,

// затем f автоматически удаляется

emitter.listeners(name) // Возвращает массив функций-обработчиков

emitter.removeListener(name, f) // Удаляет обработчик f

emitter.removeAHListeners(name) // Удаляет все обработчики события name

Объект

process
, представленный выше, является источником событий. Ниже приводится пример обработчиков некоторых его событий:

// Событие "exit" отправляется перед завершением работы Node,

process.on("exit", function { console.log("Goodbye"); });

// Необработанные исключения генерируют события, если имеется хотя бы один

// зарегистрированный обработчик. В противном случае исключение

// заставляет интерпретатор Node вывести сообщение и завершить работу,

process.on("uncaughtException", function(e) { console.log(Exception, e); });

// Сигналы POSIX, такие как SIGINT, SIGHUP и SIGTERM, также генерируют события

process.on("SIGINT", function { console.logCIgnored Ctrl-C"); });

Поскольку интерпретатор Node позволяет выполнять высокопроизводительные операции ввода/вывода, его прикладной интерфейс к потокам ввода/вывода является одним из наиболее часто используемых в программах. Потоки, открытые для чтения, генерируют события, когда появляются данные, готовые для чтения. В следующем примере предполагается, что s - это поток, открытый для чтения, созданный где-то в другом месте программы. Ниже будет показано, как создавать объекты потоков для файлов и сетевых сокетов:

// Входной поток

s.on("data", f); // При появлении данных передать их функции f в аргументе

s.on("end", f); // событие "end" возникает по достижении конца файла,

// когда данные больше не могут поступить

s.оп("еrror", f); // Если что-то не так, передаст исключение функции f

s.readable // => true, если поток по-прежнему открыт для чтения

s.pause;// Приостановит отправку событий "data".

// Например, чтобы уменьшить скорость выгрузки

s.resume; // Возобновит отправку событий "data"

// Определяет кодировку, если обработчику события "data" данные должны

// передаваться в виде строк

s.setEncoding(enc); // Как декодировать байты: "utf8”, "ascii" или "base64"

  • Читать дальше
  • 1
  • ...
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: