#javascript #yui #closures #yui3
#javascript #yui #замыкания #yui3
Вопрос:
Я не могу понять, как обновить глобальную переменную из YUI3.
Рассмотрим следующий код:
window.myVariable = 'data-one';
var yuiWrap = YUI().use('node',function(Y) {
console.log(window.myVariable); // 'data-one'
window.myVariable = 'data-two';
console.log(window.myVariable); // 'data-two'
});
console.log(window.myVariable); // 'data-one'
Кто-нибудь может мне это объяснить? Это доставляет мне много хлопот. Почему window.myVariable может быть доступен, но не обновляться должным образом из блока YUI3?
Я думаю, что это может иметь какое-то отношение к замыканиям, но я не понимаю, почему замыкания должны применяться к глобальному объекту «window».
Помочь?
Ответ №1:
Обратный вызов выполняется не сразу, а после того, как что-то произошло:
Присоединяет один или несколько модулей к экземпляру YUI. Когда это выполняется, анализируются требования, и может произойти одно из нескольких событий:
- Все требования доступны на странице — модули прикреплены к экземпляру. Если указано, обратный вызов use выполняется синхронно.
- Модули отсутствуют, утилита Get недоступна ИЛИ конфигурация ‘bootstrap’ имеет значение false — Выдается предупреждение об отсутствующих модулях, и все доступные модули подключаются.
- Модули отсутствуют, загрузчик недоступен, но утилита Get есть, а значение boostrap не равно false — загрузчик загружается перед выполнением следующего….
- Модули отсутствуют, а загрузчик доступен — загрузчик расширяет дерево зависимостей и извлекает недостающие модули. При завершении загрузки обратный вызов, предоставленный для использования, выполняется асинхронно.
Комментарии:
1. Это именно то, что нужно. Спасибо. Если я использую конфигуратор зависимостей YUI3 , чтобы убедиться, что «Узел» явно включен в страницу перед запуском моего кода, тогда все работает нормально. 🙂