Eine neue Version für das Szenario, in dem der Rückruf wird durch eine andere Funktion aufgerufen wird, nicht Ihren eigenen Code, und Sie möchten zusätzliche Parameter hinzufügen.
Zum Beispiel, täuschen wir vor, dass Sie viele geschachtelte Aufrufe mit Erfolg und Fehler Callbacks haben. Ich werde eckige Versprechungen für dieses Beispiel verwenden, aber jeder Javascript-Code mit Rückrufen wäre für diesen Zweck derselbe.
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);
});
Jetzt können Sie Ihren Code unclutter durch eine Funktion definieren, Fehler zu protokollieren, für Debugging-Zwecke, den Ursprung des Fehlers zu halten.Dies ist, wie würden Sie gehen Ihren Code Refactoring:
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 Aufruffunktion wird immer noch die Fehlerparameter nach dem Callback-Funktion Parameter hinzuzufügen.
Was Sie tun, sollte funktionieren. Welche Probleme haben Sie? –
Ihr Code funktioniert gut, was ist das Problem? – Sarfraz
Es sollte funktionieren ... http://jsfiddle.net/QXQZj/ – Hristo