2017-07-18 76 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

看起來像我期待的東西的類型。謝謝! –