JavaScript: передача параметров в функцию обратного вызова - PullRequest
262 голосов
/ 11 августа 2010

Я пытаюсь передать какой-то параметр в функцию, используемую как обратный вызов, как я могу это сделать?

function tryMe (param1, param2) {
    alert (param1 + " and " + param2);
}

function callbackTester (callback, param1, param2) {
    callback (param1, param2);
}

callbackTester (tryMe, "hello", "goodbye");

Ответы [ 11 ]

0 голосов
/ 29 сентября 2016

Новая версия для сценария, в котором обратный вызов будет вызываться какой-то другой функцией, а не вашим собственным кодом, и вы хотите добавить дополнительные параметры.

Например, давайте представим, что у вас многоВложенные вызовы с успешными и ошибочными обратными вызовами.Я буду использовать угловые обещания для этого примера, но любой код 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);
  }, 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);
};

Вызывающая функция все равно добавит параметр ошибки после параметров вашей функции обратного вызова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...