Programiści wydają się podzieleni, jak uzyskać asynchroniczne powiadomienie o błędzie.Jakie są zalety używania zastrzeżenia?
Niektórzy programiści wolą używać wywołania zwrotnego z dwoma argumentami: wartością i wartością logiczną, która określa, czy wartość nie jest błędna. Ma to tę korzyść, że wygląda jak try catch
stwierdzeniem:
asyncFunct(function (value, noError) {
if (noError) {
// success, do something with value
} else {
// value is the error which is thrown
}
});
Inni wolą ujemny (czyli logiczną powinien powiedzieć, czy wartość jest błędna). Ich rozumowanie jest to, że jeśli wiesz, że funkcja asynchroniczna nie wygeneruje błąd, to możesz bezpiecznie pominąć drugi parametr w następujący sposób:
asyncFunction(function (value, isErroneous) {
if (!isErrorneous) {
// success, do something with value
} else {
// value is the error which is thrown
}
});
asyncFunction(function (value) {
// success, do something with value
});
Następnie są ludzie, którzy proponują oddzielne wywołania zwrotne dla pomyślnej realizacji asynchronicznych funkcji i errbacks do błędnego wykonywania funkcji asynchronicznych. To pozwala programiście wybrać, czy chce obsłużyć wywołania zwrotne, errbacks, zarówno lub None:
asyncFunction(function (value) {
// success, do something with value
}, function (error) {
// handle the error
});
asyncFunction(function (value) {
// success, do something with value
});
asyncFunction(null, function (error) {
// handle the error
});
Nie pytam, dla których metoda wolisz. Po prostu pytam o zalety i wady każdej metody, aby wiedzieć, której z nich użyć, kiedy.
Brak rzeczywistych zalet i wad. To tylko kwestia stylu, imho. – freakish
Istnieje inny sposób, który jest o wiele mocniejszy IMO: [odroczone obiekty] (http://blogs.msdn.com/b/ie/archive/2011/09/11/asynchronous-programming-in-javascript-with- promises.aspx). –
Wolę odroczone obiekty. Jednak niezależnie od wybranej metody, która jest używana w całej aplikacji, spójność jest często ważniejsza niż wybór podejścia _best_. – msanders