Możliwe jest również użycie errbacks aby dostosował błąd obsługi odpowiednie do konkretnego zastosowania require
. Błędy są tutaj udokumentowane http://requirejs.org/docs/api.html#errbacks. Zasadniczo można dodać do require
funkcję, która zostanie wywołana, jeśli obciążenie się nie powiedzie. Pojawia się zaraz po wywołaniu funkcji, jeśli ładowanie się powiedzie. Sprawa
brodzie mogłyby być traktowane jako:
require([path], function(content){
//need to catch errors as this will not be called;
}, function (err) {
//display error to user
});
Oto przykład, który stara ładowania z wielu miejsc:
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);
});
});
W tym przykładzie onload
byłaby funkcja wywoływana raz wymaganych obciążeń kodowych i mode_path
jest ciągiem identyfikującym tryb. To, co widzisz, to kod próbujący załadować moduł trybu dla edytora z 3 różnych lokalizacji. Jeśli mode_path
jest foo
, spróbuje załadować foo
, następnie ./modes/foo/foo
, a następnie ./modes/foo/foo_mode
.
Przykład w requirejs.org pokazuje, w jaki sposób można obsłużyć przypadek, w którym chce wypróbować wiele lokalizacji dla zasobu, który chce udostępnić ze znanym identyfikatorem. Przypuszczalnie cała baza kodu w tym przykładzie wymaga jQuery, wymagając "jquery". Niezależnie od lokalizacji, w której znajduje się jQuery, staje się ona dostępna dla całej bazy kodu jako "jquery".
Mój przykład nie dba o udostępnienie trybu całej bazie kodu za pomocą dobrze znanego identyfikatora, ponieważ w tym konkretnym przypadku nie ma ku temu dobrego powodu. Funkcja onload
przechowuje moduł, który dostaje do zmiennej, a reszta bazy kodu pobiera je, wywołując metodę getMode()
.
ja po prostu zabrakło na to ... Mam zamiar przeszukać sieć. Wyścig do mety? – Relic
@Relic :) Po prostu znalazłem to, co go obejmuje - http://groups.google.com/group/requirejs/browse_thread/thread/8a1edb196ce9c421 – Chin
Nie rozwiązuje problemu wymagającego zgłaszania błędu, który łamie wszystkie pozostałe wymagania. .. Chyba dlatego jest to wymagane? Obwiniam webKit, ponieważ jest to jedyna przeglądarka, do której mam problemy z ładowaniem dla skryptów, więc muszę zamknąć cały document.ready() ze wszystkimi moimi skryptami na górze, a nie TYLKO, kiedy są wystrzeliwane. na szczęście jest to mały projekt i przestrzeń nazw, ale to nie pomoże mi w przyszłości. --- --- Potrzebuję awaryjnego ... i nie robię całego przechwytywania okna, tak naprawdę próbuję edytować requireJS, aby dać opcję. – Relic