gpt4 book ai didi

javascript - 正确检查 Javascript 的加载

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:58:46 24 4
gpt4 key购买 nike

我有 10 个 js 文件。我在 java 类加载之前加载所有文件。但我需要检查是否所有文件都已正确加载,然后调用我的 java 类。

首先我调用一个 js 文件加载我所有需要的 js 文件,在这里我需要检查我所有的 10 个 js 文件是否正确加载然后我需要调用一个函数。

这是我的代码

loadpackage("0.js",callback);
loadpackage("1.js",callback);
loadpackage("2.js",callback);
loadpackage("3.js",callback);
loadpackage("4.js",callback);
loadpackage("5.js",callback);
loadpackage("6.js",callback);
loadpackage("7.js",callback);
loadpackage("8.js",callback);
loadpackage("9.js",callback);
loadpackage("10.js",callback);


function loadpackage(path, callback) {

var done = false;
var scr = document.createElement('script');

scr.onload = handleLoad;
scr.onreadystatechange = handleReadyStateChange;
scr.onerror = handleError;
scr.src = path;
document.body.appendChild(scr);

function handleLoad() {
if (!done) {
done = true;
callback(path, "ok");
}
}

function handleReadyStateChange() {
console.log("readystate1");
var state;

if (!done) {
console.log("readystate2");
state = scr.readyState;
console.log("readystate3");
if (state === "complete") {
console.log("readystate4");
handleLoad();
}
}
}
function handleError() {
if (!done) {
done = true;
callback(path, "error");
}
}
}

function callback(path, message) {
console.log(path+" :: "+message);
}

我在某些地方读到 onreadystatechange 事件表明文件已成功加载,但此处未调用 onreadystatechange

所以请帮助我解决这个问题,如何检查我的所有 10 个 js 文件是否正确加载。

有些问题使用 jQuery 回答了这个问题,但我不会使用 jQuery,我需要 JavaScript 或 GWT 的答案

框架:GWT 2.6.0
我正在开发使用 Java 类的 GWT 并执行一些我需要加载 js 文件的操作

最佳答案

创建一些计数器,然后在每次 onload 回调触发时递减它。当它达到 0 时,执行您需要的操作。

var scripts = ['1.js', '2.js', ...]
var scriptsToLoad = scripts.length

scripts.forEach(loadScript)

function loadScript (path) {
var scr = document.createElement('script')

scr.onload = function () {
scriptsToLoad -= 1

if (scriptsToLoad === 0) doYourJavaThing()
}

scr.src = path
document.body.appendChild(scr)
}

function doYourJavaThing () {
// la la la
}

关于javascript - 正确检查 Javascript 的加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33074262/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com