Я использую XMLHttpRequest, и я хочу получить доступ к локальной переменной в функции обратного вызова успеха.
Вот код:
function getFileContents(filePath, callbackFn) {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
callbackFn(xhr.responseText);
}
}
xhr.open("GET", chrome.extension.getURL(filePath), true);
xhr.send();
}
И я хочу назвать это следующим образом:
var test = "lol";
getFileContents("hello.js", function(data) {
alert(test);
});
Здесь test
выходит за рамки функции обратного вызова, так как внутри функции обратного вызова доступны только входящие функциональные переменные. Каков наилучший способ передать test
функции обратного вызова, чтобы alert(test);
отображал test
правильно?
Изменить:
Теперь, если у меня есть следующий код, вызывающий функцию, определенную выше:
for (var test in testers) {
getFileContents("hello.js", function(data) {
alert(test);
});
}
Код alert(test);
выводит только последнее значение test
из цикла for
. Как сделать так, чтобы он печатал значение test
в течение времени, когда вызывалась функция getFileContents
? (Я хотел бы сделать это, не меняя getFileContents
, потому что это очень общая вспомогательная функция, и я не хочу делать ее конкретным, передавая ей определенную переменную типа test
.