Вот такой вот блок кода из приложения Backbone Marionette:
...
initialize: function(opt){
var classes = [];
for(i=0;i<opt.rightblocks.length;i++){
require(['./project/Modules/'+opt.rightblocks[i]+'/Start',], function(){
//var cm = Project.Classes.Modules[opt.rightblocks[i]]
//var block = this.rightblocks[i] = Project.module(opt.rightblocks[i], Project.Classes.Modules[opt.rightblocks[i]].Start);
//var block = this.rightblocks[i] = new opt.rightblocks[i];
console.log(i);
classes[i] = block.name;
this.addRegion(block.name, '.'+block.name);
});
}
...
console.log(i) вместо 0 печатает 1
Но если закоментировать 'require(['./project/Modules/'+opt.rightblocks[i]+'/Start',], function(){' и 'закрывашку' - всё работает корректно.
Признаться я недавно стал использовать AMD принцип, асинхронной загрузки JS.
Но иногда нужно что-бы всё было синхронно. Как это сделать?