2016-07-31  本文已影响0人  dm_vincent

h1

sdfsdfsdfsdf

 function loadModules(modulesToLoad) {
  var runBlocks = [], moduleFn;
  // 依次加载定义在依赖数组中的每一个module
  forEach(modulesToLoad, function(module) {
    // 如果已经加载过参数指定的module,立刻返回
    if (loadedModules.get(module)) return;
    loadedModules.put(module, true);

    if (isString(module)) {
      // 如果是以字符串形式定义的module --- 即module的名字
      moduleFn = angularModule(module);
      // 递归进行module的加载工作,因为被依赖的module同样还可以依赖于别的module(这里出现的runBlocks我们先行忽略,重点在其中loadModules函数的再次调用)
      runBlocks = runBlocks.concat(loadModules(moduleFn.requires)).concat(moduleFn._runBlocks);
      runInvokeQueue(moduleFn._invokeQueue);
    } else if (isFunction(module)) {
        // 如果是以函数形式定义的module
    } else if (isArray(module)) {
        // 如果是以数组形式定义的module
    } else {
      // 当module不符合上述几种类型时,抛出异常
      assertArgFn(module, 'module');
    }
  });
  
  return runBlocks;
}
上一篇 下一篇

猜你喜欢

热点阅读