/ / Procurando por um invólucro de sublinhado para evitar condições de corrida - javascript, jquery, underscore.js

Procurando por um invólucro de sublinhado para evitar condições de corrida - javascript, jquery, underscore.js

Em um aplicativo que estou depurando, um desenvolvedor anterior parece estar confiando no underscore.js para fazer algumas coisas.

Eu permaneço intermitentemente recebendo erros "_é indefinido" no console do meu navegador, impedindo que partes do aplicativo sejam executadas corretamente.

A biblioteca de sublinhado, eventualmente, parece carregar, desde que eu sou capaz de fazer console.log(_) no meu navegador e obter um objeto gigante, como resultado, uma vez que a página foi totalmente carregada.

Minha pergunta é a seguinte: existe uma maneira preferida de agrupar funções que dependem de sublinhado? (Em outras palavras, os desenvolvedores de sublinhado costumam usar algo semelhante à antiga prática de envolver um monte de lógica dentro $(function(){...}) a fim de se certificar de que ele é executado após o carregamento do jQuery?)

Respostas:

0 para resposta № 1
  • Este script é mais próximo do que você está procurando? Eu usei o carregador de scripts de Aqui

  • Ele carrega a lista de scripts fornecida e fornece um identificador de retorno de chamada no qual você pode chamar as funções js dependentes

<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>