powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / RequireJS на вторичной загрузке скрипта возвращает undefined
3 сообщений из 3, страница 1 из 1
RequireJS на вторичной загрузке скрипта возвращает undefined
    #39380221
TurboDizel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет. Пытаюсь сделать такую вещь используя RequireJS:
1. Есть скрипт Script1.js, который выполняет какие-то действия с данными из скрипта DB.js.
2. Есть скрипт Script2.js, который так же выполняет какие-то действия с данными из скрипта DB и подгружается этот скрипт из script1.js.
3. Есть сам скрипт DB, который просто имеет переменные с необходимыми данными.
Примерный кусок кода:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
//Script1.js
define(["DB", "Script2"], function (DB, Script2) {
	return function Script1() {
		console.log(DB); //выводит function () { }, всё круто
		this.script2 = new Script2();
	}
);

//Script2.js
define(["DB"], function (DB) {
	return function Script2(cid) {
		console.log(DB); //выводит undefined, не то, что хотелось бы
	}
});

//DB.js
define(function () {
	//сюда код попадает единственный раз, когда RequireJS подключает его из Script1.js
	var DB = function () {};
	DB.someData = { one: "two" };
	return DB;
});



В Script2.js в переменную DB почему-то приходит undefined. Т.е. типа файл DB уже подгружался однажды, и RequireJS решил просто ничего не делать и не возвращать. Я уверен, что он знает, что делает, но хочется узнать как всё таки получить то, что я у него прошу? DB - это такое некое подобие "класса" со статическими свойствами. В данной реализации пока пытался решить проблему я понял, что то, что сейчас написано если бы и работало как я думал, то каждый раз возвращалась бы новая функция-конструктор DB, а хотелось бы ссылку на созданную в начале. В общем, пытался объяснить как мог, итог: приходит undefined, хотя я ожидал функцию-конструктор DB. Если вы помочь хотите, но проблемы не поняли, я попытаюсь объяснить подробнее :)
...
Рейтинг: 0 / 0
RequireJS на вторичной загрузке скрипта возвращает undefined
    #39380249
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, надо подробнее.
Я сталкивался с undefined только при циклических зависимостях, и в доках об этом вроде написано. Здесь такого не видно, поэтому нужен воспроизводимый пример.
...
Рейтинг: 0 / 0
RequireJS на вторичной загрузке скрипта возвращает undefined
    #39380385
TurboDizel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander A. Sak , действительно, проблема была в циклической зависимости. Пример не до конца моделировал реальную ситуацию в проекте, поэтому в следующий раз буду делать воспроизводимые примеры.
В общем решение из документации: когда приходит undefined при циклической зависимости, я напрямую этому свойству присваиваю следующее:
Код: javascript
1.
DB = require("data/db/DB");


Наверное есть решение по лучше (как минимум избавиться от циклической зависимости), но пока в процессе обучения не стал сильно углубляться, пытаюсь не запутаться в куче новой информации, так что такое решение пока вполне подходит.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / RequireJS на вторичной загрузке скрипта возвращает undefined
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]