Javascript requirejs中每个已加载依赖项的回调?
我想在RequireJS加载javascript库时调用一个函数。我将使用它向用户指示初始初始化。通常只需不到一秒钟,但如果需要更长的时间,用户就会盯着空白屏幕,认为web应用程序出了问题。我想象这样的画面: 我能赶上失败的:Javascript requirejs中每个已加载依赖项的回调?,javascript,requirejs,Javascript,Requirejs,我想在RequireJS加载javascript库时调用一个函数。我将使用它向用户指示初始初始化。通常只需不到一秒钟,但如果需要更长的时间,用户就会盯着空白屏幕,认为web应用程序出了问题。我想象这样的画面: 我能赶上失败的: requirejs.onError = function(error) { error.requireModules.forEach(function(name) { //Create basename in case this was an URL
requirejs.onError = function(error) {
error.requireModules.forEach(function(name) {
//Create basename in case this was an URL
name.replace(/^.*[/]/, "");
// Debug
console.warn("Module failed to load: ", name);
// Find the loading node (they are hardcoded) and
// if it exists mark it as failed
var element = document.getElementById("loading_"+name);
if(element) {
element.className+=" failed";
}
});
}
var require = {
deps: ["some/module1", "my/module2", "a.js", "b.js"],
callback: function(module1, module2) {
//This function will be called when all the dependencies
//listed above in deps are loaded. Note that this
//function could be called before the page is loaded.
//This callback is optional.
}
};
这样我就可以在图像上准备弹出窗口,并在其中报告故障。但报道成功也很重要。现在有一个选项我不想使用:
requirejs.onError = function(error) {
error.requireModules.forEach(function(name) {
//Create basename in case this was an URL
name.replace(/^.*[/]/, "");
// Debug
console.warn("Module failed to load: ", name);
// Find the loading node (they are hardcoded) and
// if it exists mark it as failed
var element = document.getElementById("loading_"+name);
if(element) {
element.className+=" failed";
}
});
}
var require = {
deps: ["some/module1", "my/module2", "a.js", "b.js"],
callback: function(module1, module2) {
//This function will be called when all the dependencies
//listed above in deps are loaded. Note that this
//function could be called before the page is loaded.
//This callback is optional.
}
};
因为:
- 它仅在加载所有依赖项时执行,而不是在每个依赖项上执行
- 如果我的依赖项发生变化,它将形成另一个我必须更新的位置(并且我必须使它与我的加载弹出窗口保持同步)
onError
相反。每次成功加载模块时调用回调。它对于调试目的也很有用