Una nueva versión para el escenario en el que la devolución de llamada será llamado por alguna otra función, no su propio código, y quieres agregar parámetros adicionales.
Por ejemplo, imaginemos que tiene muchas llamadas anidadas con éxito y devoluciones de llamada de error. Usaré promesas angulosas para este ejemplo, pero cualquier código de javascript con devolución de llamada sería el mismo para ese propósito.
someObject.doSomething(param1, function(result1) {
console.log("Got result from doSomething: " + result1);
result.doSomethingElse(param2, function(result2) {
console.log("Got result from doSomethingElse: " + result2);
}, function(error2) {
console.log("Got error from doSomethingElse: " + error2);
});
}, function(error1) {
console.log("Got error from doSomething: " + error1);
});
Ahora es posible que desee eliminar el desorden de su código mediante la definición de una función para registrar los errores, manteniendo el origen del error para fines de depuración.Así es como se procedería a refactorizar su código:
someObject.doSomething(param1, function (result1) {
console.log("Got result from doSomething: " + result1);
result.doSomethingElse(param2, function (result2) {
console.log("Got result from doSomethingElse: " + result2);
}, handleError.bind(null, "doSomethingElse"));
}, handleError.bind(null, "doSomething"));
/*
* Log errors, capturing the error of a callback and prepending an id
*/
var handleError = function (id, error) {
var id = id || "";
console.log("Got error from " + id + ": " + error);
};
La función que llama todavía añadir el parámetro de error después de que sus parámetros de la función de devolución de llamada.
Lo que está haciendo debe trabajar. ¿Qué problemas tienes? –
Tu código funciona bien, ¿cuál es el problema? – Sarfraz
Debería funcionar ... http://jsfiddle.net/QXQZj/ – Hristo