Polecam Promise do takich rzeczy bardzo przyjemnie obsługuje się dzieki temu jakąkolwiek asynchroniczną działalność programu.
AJAX.prototype.createRequest = function ()
{
if (window.XMLHttpRequest){
return new XMLHttpRequest ();
}
if (window.ActiveXObject){
return new ActiveXObject("Microsoft.XMLHTTP");
}
return null;
}
AJAX.prototype.getXML = function ()
{
var request = this.createRequest();;
var xmlResponse = null;
var XMLArr = new Array ();
return new Promise((resolve, reject) => {
if(request === null){
reject("Nie działczy");
return;
}
request.open(this.method , this.file);
request.onreadystatechange = () => {
if (request.readyState == 4){
resolve(request.responseXML);
}
}
request.send(null);
});
}
Wywołanie się troche zmieni.
Contract.prototype.validateForm = function ()
{
var Connect = new AJAX("GET" , "JS/class/XML/ValidateParam.xml" );
var optionArr = {};
Connect.getXML().then((XML) => {
optionArr = Connect.readXML(XML);
alert (XML);
});
}
Z góry sorry jeśli nie będzie działać i uprzedzam ze kompatybilnosć wstecz jest słaba. Niekoniecznie z wzgledu na Promise a arrow function popatrzysz na przykłady Promise w necie i myśle ze zrozumeisz :)