I’m trying load some scripts dynamically with jQuery:
var scripts = ['script1.js','script2.js','script3.js'];
$.each(scripts , function(i, val) {
$.getScript(val, function() {
console.log('loaded '+ val);
});
But sometimes the order of loaded scripts changes. How can I load each script after the previous one has successfully loaded?
You can load each after the previous has finished loading by using the callback function of
$.getScript()as a recursive function call.What’s occurring in your code is that the scripts are being requested at the same time and since they load asynchronously, they return and execute in random order.
Update
I haven’t tested this, but if the scripts are hosted locally, then you could try to retrieve them in plain text, then store all of the code in variables until they are all loaded at which time you could evaluate the scripts in order: