Javascript 最后运行AJAX函数,如何使其首先运行
我有一个带有AJAX调用的函数(以下代码): 这段代码运行良好,但问题是它在所有函数完成后运行。我想先运行这段代码,我需要从XML中获取数据。我需要停止Javascript 最后运行AJAX函数,如何使其首先运行,javascript,jquery,ajax,xml,Javascript,Jquery,Ajax,Xml,我有一个带有AJAX调用的函数(以下代码): 这段代码运行良好,但问题是它在所有函数完成后运行。我想先运行这段代码,我需要从XML中获取数据。我需要停止$(xml).find('pub').each(function()的循环,只要Name=$(this).find('pro').text()文本匹配,每个(function()都将停止循环。因为即使我得到答案,这个循环也会执行 调用函数代码: var rd = new FileReader(); rd.onload = function(e)
$(xml).find('pub').each(function()
的循环,只要Name=$(this).find('pro').text()
文本匹配,每个(function()都将停止循环。因为即使我得到答案,这个循环也会执行
调用函数代码:
var rd = new FileReader();
rd.onload = function(e) {
var xmlDoc = $.parseXML(this.result);
var $xml = $(xmlDoc);
var J_Name = $xml.find('meta').text();
get_type(J_Name);
//check allowed child of front tag
check_allowed_direct_child("places", "Tirunelveli,Tiruchendur,Alwar", "RULE_002", "Fail");
};
rd.readAsText(this.files[i]);
呼叫救援
函数获取类型(名称,cb){
cb=cb | |函数(){};
变量字段名称;
var类型;
变量类型\u映射={
‘小’:‘L’,
“大”:“b”
};
$.ajax({
键入:“GET”,
url:“../home/Asset/MR/MR.xml”,
数据类型:“xml”,
成功:函数(xml){
$(xml)
.find('pub'))
.每个(功能){
if(name=$(this).find('pro').text()){
$(本)
.find('元数据字段')
.每个(功能){
字段名称=$(此字段)
.find('名称')
.text();
if(类型\u映射.hasOwnProperty(字段\u名称)){
类型=类型\映射[字段\名称];
返回false;//每个()的中断
}
});
返回false;//每个()的中断
}
});
cb(type);//执行提供的回调
}
});
}
var rd=new FileReader();
rd.onload=函数(e){
var xmlDoc=$.parseXML(this.result);
var$xml=$(xmlDoc);
var J_Name=$xml.find('meta').text();
获取类型(J_名称、函数(类型){
//一旦get_type()解析,类型为匹配类型或未定义类型,则执行stuff
勾选“允许”或“直接”子项(“位置”、“Tirunelveli、Tiruchendur、Alwar”、“规则002”、“失败”);
});
};
rd.readAsText(this.files[i]);
如果感兴趣,请阅读如何利用承诺,使回调代码更具摘要性:
如果仍然感兴趣,请阅读如何使用async/await使承诺代码更具摘要性:您能更好地解释一下您真正的问题是什么吗?使用从ajax调用中获取的数据的最佳方法是仅在您拥有数据时处理该数据。例如,您可以为方法get_type()提供回调函数参数并使用获得的数据调用successajax方法。
var rd = new FileReader();
rd.onload = function(e) {
var xmlDoc = $.parseXML(this.result);
var $xml = $(xmlDoc);
var J_Name = $xml.find('meta').text();
get_type(J_Name);
//check allowed child of front tag
check_allowed_direct_child("places", "Tirunelveli,Tiruchendur,Alwar", "RULE_002", "Fail");
};
rd.readAsText(this.files[i]);