2017-07-18 39 views
2

在我调试的应用程序中,以前的开发人员似乎是依靠underscore.js来做一些事情。寻找一个下划线包装,以避免竞争条件

我在浏览器控制台中间歇性地收到“_ is undefined”错误,阻止应用程序块正常运行。

下划线库最终似乎加载,因为我可以在我的浏览器中执行console.log(_),并在页面完全加载后得到一个巨大的对象。

我的问题是这样的:有没有一种首选的方法来封装依赖下划线的函数?(换句话说,不要强调开发人员经常使用类似于顺序包裹一堆逻辑的内部的老做法事,以确保它加载的jQuery后运行?)

+0

是装载underscorejs作为页面可以加载选项的第一个脚本?我问,既然下划线不依赖于任何其他的js库和它的一个不需要很长时间加载的最小脚本,所以你应该很好地加载它。 –

回答

0
  • 这是脚本的任何接近你在找什么?我使用here

  • 它加载脚本给列表中的脚本加载器,让您的回调手柄,你可以调用相关的JS功能

<html> 
 

 
<head> 
 
    <script type='text/javascript'> 
 
    function loadScripts(array, callback) { 
 
     var loader = function(src, handler) { 
 
     var script = document.createElement("script"); 
 
     script.src = src; 
 
     script.onload = script.onreadystatechange = function() { 
 
      script.onreadystatechange = script.onload = null; 
 
      handler(); 
 
     } 
 
     var head = document.getElementsByTagName("head")[0]; 
 
     (head || document.body).appendChild(script); 
 
     }; 
 
     (function run() { 
 
     if (array.length != 0) { 
 
      loader(array.shift(), run); 
 
     } else { 
 
      callback && callback(); 
 
     } 
 
     })(); 
 
    } 
 

 
    loadScripts([ 
 
     "https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js" 
 
    ], function() { 
 
     console.log(_); 
 
     var arr = ['jQuery', 'underscore', 'jasmine']; 
 
     _.each(arr, (val) => { 
 
     console.log(val); 
 
     }); 
 
    }); 
 
    </script> 
 
</head> 
 

 
<body> 
 

 
</body> 
 

 
</html>

+0

看起来像我期待的东西的类型。谢谢! –