requirejs несколько требует подряд
Я написал загрузчик модулей JavaScript, который определяет различные модули внутри цикла.
function(moduleList) {
var arr = [];
for (i = 0, l = moduleList.length; i < l; i++) {
var m = moduleList[i];
define(m.guid, function() {
return {
container : m.container,
configuration : m.configuration,
moduleId : m.id
}
});
arr[i] = m;
}
}
Сразу после этого появляется следующий цикл for, в котором я "требую" ранее определенные модули.
for (i = 0, l = arr.length; i < l; i++) {
require([arr[i].id,arr[i].guid], function(module, moduleConfiguration) {
core.utils.log("m.id: " + moduleConfiguration.moduleId);
core.utils.log("init " + moduleConfiguration.moduleId, moduleConfiguration);
module.init(moduleConfiguration);
});
}
Проблема теперь в том, что внутри каждого блока "require" moduleConfiguration и module одинаковы. Для выполнения вызова "require" используются разные идентификаторы, но результат всегда одинаков.
Кто-нибудь знает, как найти способ обойти это?
1 ответ
Решение
Я думаю, что ваша функция определения должна выглядеть так, чтобы "m" было правильно определено:
function(moduleList) {
var arr = [], i; // declare i!!!!
function def(m) {
define(m.guid, function() {
return {
container : m.container,
configuration : m.configuration,
moduleId : m.id
}
});
}
for (i = 0, l = moduleList.length; i < l; i++) {
var m = moduleList[i];
def(m);
arr[i] = m;
}
}
В вашем коде одна и та же переменная "m" является общей для всех этих обратных вызовов модуля. Вводя другую функцию (и другую область видимости), вы гарантируете, что каждый обратный вызов имеет свою собственную копию.