Также можно использовать errbacks, чтобы подгоняли обработку ошибок целесообразно конкретного использования require
. Ошибки описаны здесь 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()
.
Я просто побежал в это ... Я буду рыскать веб. Гонка до финиша? – Relic
@Relic :) Только что нашел это, которое покрывает его - http://groups.google.com/group/requirejs/browse_thread/thread/8a1edb196ce9c421 – Chin
Не исправляет проблему необходимости бросать ошибку, которая нарушает все остальные требования. .. Полагаю, именно поэтому это требует, да? Я обвиняю webKit, потому что это единственный браузер, который имеет проблемы с порядком загрузки для скриптов, поэтому я должен инкапсулировать весь document.ready() со всеми моими сценариями вверху, а не ТОЛЬКО при их запуске. к счастью, это небольшой проект и пространство имен, но это не помогает мне в будущем. --- Мне нужен резерв ... и я не делаю захвата всего окна, я на самом деле пытаюсь отредактировать requireJS, чтобы дать возможность. – Relic