У меня есть проблема с обратным вызовом плагина Кордова, который может быть проиллюстрирована следующим кодом:Undefined переменной в функции обратного вызова
function foo(param) {
setTimeout(function(){
console.log("In:", param);
}, 1000);
console.log("Out:", param);
}
foo(1);
В этом примере, я притворяюсь на pluging обратного вызова через простой тайм-аут ,
Ожидаемый результат:
Out: 1
In: 1
Но проблема я столкнулся в том, что в моем реальном приложении с реальными плагинами обратных вызовов (не тайм-аута), иногда значение параметра функции в функции обратного вызова undefined
, как если бы в предыдущем примере были получены следующие результаты:
Out: 1
In: undefined
Имеет ли смысл? Есть ли случай, когда переменная (параметр функции) перестает быть доступной в закрытии?
Можете ли вы поделиться эти сценарии? Убедитесь, что вы не принимаете аргумент как аргумент обратного вызова, например 'setTimeout (function (param) {...' – Rayon
Это огромное количество обратных вызовов, которые несколько раз вызываются из разных точек, некоторые из них из native. В любом случае я реорганизовал свой код и эта проблема больше не возникает.Просто любопытно, что может произойти. – IsidroGH