Пишу динамическую загрузку javascript-ов. Есть список названий файлов, которые нужно загрузить, и список callback-ов, которые нужно выполнить после загрузки. Типа:
onload_js = [];<br>
onload_js[onload_js.length] = {"src":"script1.js","callback":function() { callback1(); }};<br>
onload_js[onload_js.length] = {"src":["script2.js","script3.js"],"callback":function() { callback23(); }};<br>
Это значит, что нужно загрузить script1.js, после выполнить callback1, а еще нужно загрузить script2.js и script3.js, и когда оба будут загружены, выполнить callback23.
Пробегаю в цикле по всем onload_js и гружу скрипты через jquery метод $.getScript. Проблема в том, что не знаю, как правильно сделать замыкание внутри callback-а метода $.getScript.
Типа:
for (var i in onload_js) {<br>
for (var j in onload_js[i]["src"]) {<br>
$.getScript(onload_js[i]["src"][j],function() {<br>
if (//Здесь проверка что все остальные скрипты загружены тоже)<br>
onload_js[i]["callback"]();<br>
}<br>
}<br>
}<br>
Это без замыкания. И понятно, что параметр i внутрь безымянной функции не передается. И все не работает, потому как callback-и вызываются в том порядке как им вздумается. Но написать
$.getCode(onload_js[i]["src"][j],function(i,j) {<br>
нельзя, потому что тогда в i,j приходят переменные из ajax-ответа getCode (т.е. статус ответа и содержание файла). Если же обернуть безымянную функцию в скобки и вызвать call(i,j), то параметры i,j передаются правильно, но сами скрипты не грузятся (callback1 и callback23 не определены).
Что делать?