Когда я объявляю OnSuccess
внутри другой функции, как показано ниже, консоль инструментов разработчика браузера указывает на ошибку, что в глобальной области нет функции с именем OnSuccess
. Из этого я делаю вывод, что любые функции, объявленные как ниже внутри другой функции, все еще вставлены/закреплены/обработаны как функции объекта HTML DOM window
.Функции JavaScript внутри функций JavaScript, закрытий и т. Д.
Затем объявляю OnError
, как вы объявляете элемент внутри инициализатора объекта. Это тоже не работает.
Один способ, которым я мог сделать, это движение как OnError
и OnSuccess
вне функции AssignBackupOnServer
, но я хочу OnSuccess
и OnError
, чтобы иметь возможность смотреть на локальные переменные AssignBackupOnServer
, поэтому я объявил его в функции AssignBackupOnServer
.
Каков правильный способ обхода этого объявления, если я хочу, чтобы содержащаяся лямбда обнаружила замыкание на захваченных переменных своей содержащей/охватывающей функции?
function AssignBackupOnServer(mainGuyUId, backupUId, backupFirstName, backupLastName) {
var url = '/Foo/SearchForBackup';
$.ajax(url,
{
cache: false,
async: false,
type: 'POST',
data: JSON.stringify(
{
'mainGuyUId': mainGuyUId,
'backupUId': backupUId,
'backupFirstName': backupFirstName,
'backupLastName': backupLastName
}),
dataType: 'json',
contentType: 'application/json',
success: AssignBackupOnServer.OnSuccess,
error: AssignBackupOnServer.OnError
});
function OnSuccess(data, textStatus, jqXHR) {
// I want to use mainGuyUId, backupUId,
// backupFirstName, and backupLastName
// here and therefore, I want this function
// to exhibit a closure on its containing lambda
// so I have declared it here
}
OnError : function(jqXHR, textStatus, errorThrown) {
}
}
Спасибо. :-) Это то, что я сделал сначала, но я не могу вспомнить, вызвало ли я ошибку или нет. Пожалуйста, позвольте мне попробовать и вернуться к вам. –
Спасибо. Это сработало. :-) –