Нова версія для сценарію, коли зворотний виклик буде викликаний якоюсь іншою функцією, а не власним кодом, і ви хочете додати додаткові параметри.
Наприклад, зробимо вигляд, що у вас багато вкладених дзвінків з успіхом та помилками викликів. Я буду використовувати кутові обіцянки для цього прикладу, але будь-який код JavaScript з зворотними викликами буде однаковим для цієї мети.
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);
});
Тепер ви, можливо, захочете скасувати ваш код, визначивши функцію журналу помилок, зберігаючи походження помилки для цілей налагодження. Ось як би ви перейшли до рефакторного коду:
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);
};
Функція виклику все одно додасть параметр помилки після параметрів функції зворотного виклику.