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;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容