/ / Szukam opakowania podkreślenia, aby uniknąć warunków wyścigu - javascript, jquery, underscore.js

Szukasz opakowania podkreślnika, aby uniknąć warunków wyścigu - javascript, jquery, underscore.js

W aplikacji, którą debuguję, poprzedni programista wydaje się polegać na underscore.js, aby zrobić kilka rzeczy.

W mojej konsoli przeglądarki wciąż pojawiają się sporadycznie błędy „_ jest niezdefiniowany”, co uniemożliwia prawidłowe działanie części aplikacji.

Biblioteka podkreślenia w końcu wydaje się ładować, ponieważ jestem w stanie to zrobić console.log(_) w mojej przeglądarce i uzyskaj w rezultacie gigantyczny obiekt, gdy strona zostanie w pełni załadowana.

Moje pytanie brzmi: czy istnieje preferowany sposób na zawijanie funkcji opartych na podkreśleniu? (Innymi słowy, programiści podkreślający często używają czegoś podobnego do starej praktyki owijania wewnątrz logiki $(function(){...}) aby upewnić się, że działa po załadowaniu jQuery?)

Odpowiedzi:

0 dla odpowiedzi № 1
  • Czy ten skrypt jest bliżej tego, czego szukasz? Użyłem programu ładującego skrypty z tutaj

  • Ładuje podaną listę skryptów i udostępnia uchwyt wywołania zwrotnego, w którym można wywołać zależne funkcje 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>