Я пытаюсь использовать функцию обратного вызова в первый раз, и у меня возникают проблемы с ее работой. Вот упрощенная версия моего кода:Почему не работает эта функция обратного вызова?
var unsavedChanges = 1;
function saveData(callback)
{
// save data
if(typeof callback === "function")
{
unsavedChanges = 0;
callback.apply(arguments);
}
}
function nextStep(val)
{
if(unsavedChanges == 1)
{
saveData(nextStep, val);
return false;
}
console.log(val);
}
nextStep("test");
JSFiddle: http://jsfiddle.net/tXqn3/
Внутри моей реальной функции «сейв» Я сохраняю данные, используя $.ajax()
и у меня есть обратный вызов в функции .done()
. Таким образом, если на странице есть несохраненные данные, они сохраняются, а затем запускается исходная функция, которая была вызвана.
С помощью этого кода значение undefined
распечатывается на консоль при запуске кода. Что я делаю не так?
'callback.apply (аргументы)'? Вы применяете обратный вызов для обратного вызова? – elclanrs
@elclanrs Я читал, что это вызывает функцию обратного вызова с аргументами. То есть это то же самое, что делать callback (arguments [1], ...); ', но с тем преимуществом, что аргументы не должны быть жестко закодированы. – Nate
Можете ли вы разместить «настоящий» код. Трудно определить, что такое 'arguments', если это набор, включающий' callback', или если это аргументы 'done' (поскольку вы упомянули, что они завернуты в' done'). – Joseph