Skip to content

Instantly share code, notes, and snippets.

@zhdanovme
Last active November 11, 2015 14:15
Show Gist options
  • Select an option

  • Save zhdanovme/3b924c01769241e33642 to your computer and use it in GitHub Desktop.

Select an option

Save zhdanovme/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, сначала создать промис с каким-то именем, а потом его уже использовать.

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

@zhdanovme
Copy link
Author

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

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