yandex / mapsapi-modules

Async modular system
132 stars 29 forks source link

Для чего используется nextTick #44

Closed DChinin closed 9 years ago

DChinin commented 9 years ago

Какой смысл в выполнении require через nextTIck?

Возникла проблема: необходимо динамически подгрузить скрипт. Внутри скрипта modules.require использует уже определенные модули. Ожидаемый результат, что по script.onload коллбэк из modules.require уже будет выполнен. Возможно уже есть решение с динамической подгрузкой?

dfilatov commented 9 years ago

modules.require выполняется асинхронно для того, чтобы не зависеть от порядка, в котором идут декларации и реквайры.

Учитывая асинхронную природу модулей, которые вообще могут резолвиться не сразу, ожидаемого результата, что "по script.onload коллбэк из modules.require уже будет выполнен" быть не может в принципе.

DChinin commented 9 years ago

@dfilatov ок, есть примеры решения динамической подгрузки? События/костыли?

dfilatov commented 9 years ago

Что именно имеется ввиду под динамической загрузкой?

Вот, например, модуль, который умеет динамически подгружать js https://github.com/bem/bem-core/blob/v2/common.blocks/loader/_type/loader_type_js.js, после загрузки которого, можно реквайрить новые модули.

DChinin commented 9 years ago

@dfilatov необходимо выполнить функцию после выполнения коллбэка из подгружаемого модуля. (скрыть прелоадер при открытии новой view, либо передать параметры в открываемую view).

Варианты реализации понятны, спасибо за ответы!