Как называется асинхронный шаблон проектирования Google Analytics и где он используется?

Асинхронный код Google Analytics использует совершенно особый шаблон проектирования для выполнения кода javascript.

Код зависит от библиотеки, и он не знает, загрузилась ли библиотека или не. Если библиотека еще не загрузилась, она просто помещает все команды в очередь в объект Array. Когда библиотека загружается, она просто создает объект _gaq и выполняет все команды в той последовательности, в которой он был включен. Затем он перезаписывает функцию push, поэтому будущие команды выполняются сразу.

Идея состоит в том, чтобы команды выполнялись очень быстро, когда они помещены в очередь. Код действительно оценивается позже, когда библиотека загружается.

Они также загружают библиотеку с параметрами async = true . Это почти не влияет на фактическое время загрузки страницы.

Команды выглядят точно так же, как их синхронизированные версии, но первая строка - это имя функции, а следующие параметры - это параметры этой функции. Вы также можете помещать функции в этот массив, и функции будут выполняться последовательно, а также с нулевым контекстом.Так что, если вам нужно сделать что-то синхронно с библиотекой, вы можете добавить функцию для этого внутри _gaq.

Я думаю, что это очень умное решение, но я никогда раньше не видел его. Кто-нибудь знает название этого шаблона проектирования или где он используется помимо кода отслеживания Google Analytics?

47
задан Simcha Khabinsky 21 May 2014 в 14:14
поделиться