Los programadores parecen estar divididos sobre cómo recibir notificaciones asincrónicas sobre un error.¿Cuáles son las ventajas de usar un errback?
Algunos programadores prefieren utilizar una devolución de llamada con dos argumentos: un valor y un booleano que indica si el valor no es erróneo. Esto tiene la ventaja de que se vea como una declaración try catch
:
asyncFunct(function (value, noError) {
if (noError) {
// success, do something with value
} else {
// value is the error which is thrown
}
});
Otros prefieren el negativo (es decir, el booleano debe decir si el valor es errónea). Su razonamiento es que si se sabe que la función asíncrona no generará un error a continuación, se puede omitir con seguridad el segundo parámetro de la siguiente manera:
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
});
luego hay gente que proponen las devoluciones de llamada por separado para la ejecución exitosa de las funciones asíncronas y errbacks para la ejecución errónea de funciones asíncronas. Esto permite al programador seleccionar si quiere manejar las devoluciones de llamada, errbacks, ambos o ninguno:
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
});
No estoy pidiendo el método que prefiera. Simplemente estoy preguntando las ventajas y desventajas de cada método para saber cuál usar cuando.
No hay ventajas/desventajas reales. Es solo una cuestión de estilo, yo. – freakish
Hay otra manera, que es mucho más poderosa IMO: [objetos diferidos] (http://blogs.msdn.com/b/ie/archive/2011/09/11/asynchronous-programming-in-javascript-with- promises.aspx). –
Prefiero los objetos diferidos también. Pero sea cual sea el método que elija, utilícelo de manera consistente en toda la aplicación, la coherencia suele ser más importante que elegir el mejor enfoque. – msanders