Регистрация файлов JavaScript и зависимого встроенного кода - PullRequest
0 голосов
/ 25 октября 2010

У меня есть два массива.

  1. Список URL-адресов файлов JavaScript, которые я регистрирую с помощью $ .getScript (url);
  2. Список встроенных команд JavaScript для регистрации с $ ("html").append (inline)

Любые элементы в (2) могут зависеть от любых элементов в (1).Это означает, что я должен быть уверен, что все элементы в (1) закончили загрузку до того, как какой-либо из (2) был зарегистрирован.

Я хочу загрузить все (1) асинхронно ... так как это будет быстрее, но как мне убедиться, что все эти процессы завершены до регистрации (2)?

Ответы [ 3 ]

1 голос
/ 25 октября 2010

Я думаю, что так должно работать:

var scripts = [
  {"src": "script1", "loaded": false},
  {"src": "script2", "loaded": false},
  {"src": "script3", "loaded": false},
]
var commands = ["cmd1","cmd2","cmd3"];

for (var i = 0, l = scripts.length; i<l; i++){
  (function (script){
    $.ajax({
      url: script.src,
      dataType: 'script',
      success: function (){

        for (var k = scripts.length; k--;){
          if (scripts[k].src === script.src){
            scripts[k].loaded = true;
          }
        }

        var allReady = true;
        for (var k = scripts.length; k--;){
          if (!scripts[k].loaded){
            allReady = false;
          }
        }
        if (allReady){
          /*execute your inline commands*/
        }
      }
    });
  })(scripts[i]);
}
1 голос
/ 25 октября 2010

По моему мнению, это должно быть решено с помощью способности обратного вызова jQuery;см. краткие описания использования здесь , надеюсь, это поможет.

РЕДАКТИРОВАТЬ: вот фактический код:

$.extend({myFunc : function(someArg, callbackFnk){
// load files here
var data = 'test';

// now call function for inline loading
if(typeof callbackFnk == 'function'){
  callbackFnk.call(this, data);
}}});

$.myFunc(someArg, function(arg){ */here goes inline load*/ });
0 голосов
/ 25 октября 2010

вы можете добавить (2) в обработчик успеха вызова ajax.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...