Ответ 1
Также возможно использовать errbacks для настройки обработки ошибок, соответствующей конкретному использованию require
. Errbacks описаны здесь http://requirejs.org/docs/api.html#errbacks. В принципе, вы можете добавить к require
функцию, которая будет вызываться, если сбой загрузки. Он появляется сразу после вызова функции, если загрузка выполнена успешно.
Случай Чин может быть обработан как:
require([path], function(content){
//need to catch errors as this will not be called;
}, function (err) {
//display error to user
});
Вот пример, который пытается загрузить из нескольких мест:
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);
});
});
В этом примере onload
будет функция, вызываемая после загрузки требуемого кода, а mode_path
- это строка, идентифицирующая этот режим. Что вы видите, есть код, пытающийся загрузить модуль режима для редактора из трех разных мест. Если mode_path
- foo
, он попытается загрузить foo
, затем ./modes/foo/foo
, а затем ./modes/foo/foo_mode
.
В примере на requirejs.org показано, как можно обрабатывать случай, когда они хотят попробовать несколько местоположений для ресурса, который они хотят сделать доступным с помощью известного идентификатора. Предположительно, вся база кода в этом примере требует jQuery, требуя "jquery". В любом месте, где находится jQuery, оно становится доступным для всей базы кода как "jquery".
Мой пример не заботится о том, чтобы режим, известный всей кодовой базе, через известный идентификатор, потому что в этом конкретном случае нет веских оснований для этого. Функция onload
сохраняет модуль, который он получает в переменную, а остальная часть базы кода получает его, вызывая метод getMode()
.