Eine neue Version für das Szenario, in dem der Callback von einer anderen Funktion aufgerufen wird, nicht von Ihrem eigenen Code, und Sie zusätzliche Parameter hinzufügen möchten.
Nehmen wir zum Beispiel an, dass Sie viele verschachtelte Aufrufe mit Erfolgs- und Fehlerrückrufen haben. Ich werde Angular Versprechen für dieses Beispiel verwenden, aber jeder Javascript-Code mit Rückrufe wäre das gleiche für den Zweck sein.
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);
});
Nun möchten Sie vielleicht Ihren Code entrümpeln, indem Sie eine Funktion definieren, die Fehler protokolliert und den Ursprung des Fehlers zu Debugging-Zwecken festhält. So würden Sie vorgehen, um Ihren Code zu refaktorisieren:
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);
};
Die aufrufende Funktion fügt den Fehlerparameter nach den Parametern Ihrer Callback-Funktion hinzu.