LINUX.ORG.RU

JavaScript, можно ли присвоить функцию по значению?

 ,


0

1

Я в JavaScript новичок.
Есть такая функция:

function loadXMLDoc(url){
  req.open("GET", url, true);
  req.onreadystatechange = onXMLRequestReady;
  req.send(null);
}
Обязательно ли делать функцию-обработчик - глобальной? Или можно написать:
req.onreadystatechange = function (e) {...};
(будет ли существовать в этом случае function (e) {...} после завершения функции loadXMLDoc?
например, если ответ от http-сервера «подвиснет»)

★★★★★

Последнее исправление: pacify (всего исправлений: 2)

Обязательно ли делать функцию-обработчик - глобальной?

Не обязательно. Вот тебе примерчик:

function sendrequest(CGI_PATH, req_STR, fn_OK){
	var timeout_id, str;
	var request = new XMLHttpRequest();
	request.open("POST", CGI_PATH, true);
	request.setRequestHeader("Accept-Charset", "koi8-r");
	request.overrideMimeType("multipart/form-data;");
	request.onreadystatechange=function(){
		if(request.readyState == 4){
			if(request.status == 200){
				clearTimeout(timeout_id);
				fn_OK(request);
			}
			else{
				clearTimeout(timeout_id);
				alert("Error: can't connect to data server");
				fn_OK(request); // фигасе, вот это у меня дырищи в коде!
			}
		}
	}
	request.send(req_STR);
	timeout_id = setTimeout(function(){
			request.onreadystatechange=null; request.abort();
		}, 1500);
}

Eddy_Em ☆☆☆☆☆
()
Последнее исправление: Eddy_Em (всего исправлений: 1)
Ответ на: комментарий от xorik

Добавь теги js, javascript, может кто прибежит

Мне уже ответил один знакомый: «Время жизни замыкания в данном случае равно времени жизни объекта (req), обычно так и делают, через анонимную функцию.»
И ещё: «как на js сложить 2 числа? ответ: должен быть такой плагин для jquery».

pacify ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.