gpt4 book ai didi

javascript - requirejs 连续多个 require

转载 作者:行者123 更新时间:2023-11-28 02:19:29 24 4
gpt4 key购买 nike

我编写了一个 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” block 内,moduleConfiguration 和模块是相同的。要进行“require”调用,它使用不同的 id,但结果始终相同。

有人知道如何解决这个问题吗?

最佳答案

我认为您的定义函数应该如下所示,以便“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”在所有这些模块回调之间共享。通过引入另一个函数(和另一个作用域),您可以确保每个回调都有自己的副本。

关于javascript - requirejs 连续多个 require,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15879907/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com