Skip to content

Instantly share code, notes, and snippets.

@App3x
Last active November 11, 2015 14:15
Show Gist options
  • Save App3x/3b924c01769241e33642 to your computer and use it in GitHub Desktop.
Save App3x/3b924c01769241e33642 to your computer and use it in GitHub Desktop.
Доработки по компонентам

Проблема недетерминированности порядка инициализации компонентов.

Во-первых: нужно явно отделить механизмы ожидания инита компонента, и ожидания события в каком-то компоненте.

Для событий - любой реализуемый механизм (калбеки/события/промисы etc)

Для ожидания инита компонента - реализация в механизме компоннентов в виде Components.await(node, componentName) -> Promise

Почему bloko/common/ready плохо:

  • bloko никак не связан с нашей структурой, и не должен завязываться на наши особенности инициализации компонентов, блоко должен предоставлять независимые модули, которые будут инититься синхронно по зависимостям.
    • инициализация должна быть синхронная, следовательно нам не нужен вообще bloko/common/ready для ожидания готовности блоко модуля.
    • следовательно нам не нужно знать имя промиса который торчит из независимого блока (не надо заглядывать в блоко)
  • bloko/common/ready предоставляет фарш возможностей, из-за этого получается дырявая абстракция механизма, без явного понимания что делает конкретно тут этот инструмент.

Почему Components.await хорошо:

  • Недетерминированный порядок инициализации компонентов, это особенности Components, эта особенность должна разруливаться его же средствами
  • У нас уже есть в Components промис который отвечает за окончание инициализации компонента (нужен для init().done)
  • У нас уже есть имя с которым надо "создавать" промис, имя компонента, не нужно как в случае с ready, сначала создать промис с каким-то именем, а потом его уже использовать.

Получается явная схема ожидания компонента - ожидание готовности конкретного компонента на конкретной ноде, а в калбеке - уже работа по взаимодействию, написаная средствами по взаимодействию.

@App3x
Copy link
Author

App3x commented Sep 7, 2015

Как дождаться готовности нескольких компонентов?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment