Il est également possible d'utiliser errbacks à avoir personnalisé la gestion d'erreur approprié à l'utilisation spécifique de l' require
. Errbacks sont documentées ici http://requirejs.org/docs/api.html#errbacks. Fondamentalement, vous pouvez ajouter à l' require
une fonction à appeler si le chargement échoue. Il vient juste après la fonction qui doit être appelée que si la charge est réussie.
Ces cas peuvent être traités en tant que:
require([path], function(content){
//need to catch errors as this will not be called;
}, function (err) {
//display error to user
});
Voici un exemple qui tente de chargement à partir de plusieurs endroits:
require([mode_path], onload, function (err) {
if (mode_path.indexOf("/") !== -1)
// It is an actual path so don't try any further loading
throw new Error("can't load mode " + mode_path);
var path = "./modes/" + mode_path + "/" + mode_path;
require([path], onload,
function (err) {
require([path + "_mode"], onload);
});
});
Dans cet exemple, onload
serait la fonction appelée une fois le code requis des charges, mode_path
est une chaîne de caractères identifiant la mode. Ce que vous voyez là est le code de la tentative de chargement d'un module en mode pour un éditeur à partir de 3 endroits différents. Si mode_path
est foo
, il va essayer de charger foo
, alors ./modes/foo/foo
puis ./modes/foo/foo_mode
.
L'exemple à requirejs.org montre comment on peut traiter un cas où ils veulent essayer plusieurs emplacements pour les ressources qu'ils souhaitent rendre disponibles avec un identificateur bien connu. Sans doute l'ensemble de la base de code dans cet exemple nécessite jQuery en exigeant "jquery". Quel que soit l'endroit jQuery se trouve à l', il devient disponible pour l'ensemble de la base de code comme "jquery".
Mon exemple ne se soucie pas de faire de la mode connue pour l'ensemble de la base de code par l'intermédiaire d'un identificateur bien connu parce que dans ce cas précis il n'y a aucune bonne raison de le faire. L' onload
fonction enregistre le module, il pénètre dans une variable et le reste de la base de code, il obtient en appelant un getMode()
méthode.