Перейти к содержанию

Начало урока

Sobytiya i EventEmitter

Kak Node pozvolyaet odnoy chasti programmy obyavit, chto chto-to proizoshlo, a drugim chastyam otreagirovat - ne znaya drug o druge.

Glavnaya ideya: Bolshaya chast Node upravlyaetsya sobytiyami. Vmesto togo chtoby odna funkciya napryamuyu vyzyvala druguyu, komponent ispuskaet (emit) imenovannoe sobytie, a lyuboe chislo slushateley reagiruet na nego. Klass EventEmitter - eto nebolshoy, no moshchnyy dvigatel, kotoryy delaet etot pattern dostupnym v vashem sobstvennom kode.
K koncu etoy temy vy smozhete:
  • sozdat EventEmitter i registrirovat slushateley cherez on() i once(),
  • zapuskat sobytiya cherez emit() i peredavat dannye slushatelyam,
  • udalyat slushateley i ponimat osoboe sobytie error,
  • ispolzovat sobytiya dlya razvyazki (decoupling) chastey prilozheniya, chtoby oni menyalis nezavisimo.

1. Myshlenie v terminah sobytiy

Vy uzhe vstrechali sobytiya, ne nazyvaya ih. Kogda vy pisali server.on('request', handler) dlya HTTP-servera ili stream.on('data', chunk => ...) pri chtenii fayla, vy slushali sobytiya, kotorye Node ispuskal dlya vas. Eta tema daet vam tu zhe mashineriyu, chtoby vashi sobstvennye obekty mogli obyavlyat o proishodyashchem.

Pri sobytiyno-orientirovannom dizayne kod, kotoryy zametil chto-to, ne vyzyvaet kod, kotoryy dolzhen otreagirovat. On prosto delaet obyavlenie - "polzovatel zaregistrirovalsya", "fayl skachan" - i idet dalshe. Kto zainteresovan, uzhe podpisan. Eto takzhe nazyvayut patternom publikaciya/podpiska (pub-sub) ili nablyudatel (observer).

Zachem eto nuzhno? Potomu chto eto derzhit komponenty slabo svyazannymi. Chast, sozdayushchaya polzovatelya, ne dolzhna znat, chto my takzhe otpravlyaem privetstvennoe pismo, obnovlyaem analitiku i progrevaem kesh. Zapihivanie vsego etogo v odnu funkciyu delaet ee dlinnoy, hrupkoy i trudnoy dlya testirovaniya. Ispuskanie odnogo sobytiya userRegistered pozvolyaet kazhdoy zadache zhit v svoem slushatele.

Продолжите этот урок на YourAIZone

В полном уроке — объяснение целиком, разобранные примеры, частые ошибки, тесты с мгновенной проверкой и ИИ-репетитор. Начните сразу как гость или создайте аккаунт, чтобы сохранять прогресс.

В полном уроке

  • Объяснение целиком
  • Разобранные примеры
  • Частые ошибки и как их избежать
  • Тестовые вопросы: 15
  • ИИ-репетитор, который отвечает на вопросы по теме
  • Отслеживание прогресса для ученика, родителей и учителя