寻找下划线包装器以避免竞争条件



在我正在调试的应用程序中,以前的开发人员似乎依靠下划线.js来做几件事。

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

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

我的问题是:有没有一种首选的方式来包装依赖于下划线的函数? (换句话说,下划线开发人员是否经常使用类似于将一堆逻辑包装在$(function(){...})中的旧做法,以确保它在加载 jQuery 后运行?

  • 这个脚本更接近你要找的吗?我从这里使用了脚本加载器

  • 它加载给定的脚本列表,并为您提供一个回调句柄,您可以在其中调用依赖的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>

最新更新