Javascript 如何使ajax函数等待回调函数的所有结果显示

Javascript 如何使ajax函数等待回调函数的所有结果显示,javascript,html,jquery,Javascript,Html,Jquery,我在Ajax函数中读取XML文件中图像的URL,异步设置为false,所以应该等待Ajax函数完成。在接收这些URL时,我调用另一个函数来验证URL是否具有有效的图像,并且我从回调函数“isUrlIsImage()”接收布尔值。。。然而,我发现Ajax并不等待从回调函数接收所有结果。。。有人知道去哪里找吗???如何强制Ajax等待所有回调函数。。。非常感谢 $.fn.initializeImg = function (CP_ID) { var selected_dataType = "";

我在Ajax函数中读取XML文件中图像的URL,异步设置为false,所以应该等待Ajax函数完成。在接收这些URL时,我调用另一个函数来验证URL是否具有有效的图像,并且我从回调函数“isUrlIsImage()”接收布尔值。。。然而,我发现Ajax并不等待从回调函数接收所有结果。。。有人知道去哪里找吗???如何强制Ajax等待所有回调函数。。。非常感谢

$.fn.initializeImg = function (CP_ID) {

var selected_dataType = "";

if (currentBrowser().browser == "IE" && currentBrowser().version < 10) {

    selected_dataType = "text";
}
else {
    selected_dataType = "xml";
}

$.ajax({
    type: "GET",
    url: "XML_file.xml",
    dataType:  selected_dataType,
    async:false,
    success: function (xml) {

        var processedXML_01 = parseXml(xml);


      $(processedXML_01).find('property').each(function () {

      var j_propertyIn_List = $(this).find('propcode').text();

           if (j_propertyIn_List == gb_var.j_propcode) {

       $(this).find('photo').each(function (index) {

       gb_var.j_propertyImgURLs[index] = $(this).find('urlname');

     console.log(">>>>   "+gb_var.j_propertyImgURLs[index].text());

      isUrlIsImage(gb_var.j_propertyImgURLs[index].text(), function (_url, result) {

    //alert("check result >> "+result + " for " + _url);

     if (result) {

      console.log("******TRUE*********  check result >> " + result + " for " + _url);

     }
     else {
      console.log("******FALSE*********  check result >> " + result + " for " + _url);

                       }
                   });
               });
            }
        });
    },
    error: function () {
        alert("An error occurred while processing XML file.");
    }

  });

  } //end plugin function 

  })(jQuery);


function isUrlIsImage(given_url, callback) {

console.log(" checking............. " + given_url);

url = given_url;

   $("<img>", {
       src: url,
       error: function () { callback(url, false); },
       load: function () { callback(url, true); }
      });
  }
$.fn.initializeImg=函数(CP\U ID){
所选var_数据类型=”;
如果(currentBrowser().browser==“IE”&¤tBrowser().version<10){
所选数据类型=“文本”;
}
否则{
选择的_dataType=“xml”;
}
$.ajax({
键入:“获取”,
url:“XML_file.XML”,
数据类型:选定的\u数据类型,
async:false,
成功:函数(xml){
var processedXML_01=parseXml(xml);
$(processedXML_01).find('property').each(函数(){
var j_propertyIn_List=$(this.find('propcode').text();
if(j_propertyIn_List==gb_var.j_propcode){
$(this).find('photo')。每个(函数(索引){
gb_var.j_propertyImgURLs[index]=$(this.find('urlname');
console.log(“>>>>”+gb_var.j_propertyImgURLs[index].text());
iUrlisImage(gb_var.j_propertyImgURLs[index].text(),函数(_url,结果){
//警报(“检查结果>>”+结果+”,用于“+\u url”);
如果(结果){
console.log(“******TRUE*********check result>>”+result+”表示“+\u url”);
}
否则{
console.log(“*********FALSE*********检查结果>>”+result+”表示“+\uURL”);
}
});
});
}
});
},
错误:函数(){
警报(“处理XML文件时出错。”);
}
});
}//结束插件函数
})(jQuery);
函数isUrlIsImage(给定url,回调){
日志(“检查………”+给定的url);
url=给定的url;

$("你看到了吗?它有一个惊人的功能,告诉你所有的选项。其中一个是
async
,我想你应该去看看。你有什么理由需要同步做这件事吗?async选项从v1.8开始就被弃用了。
async:false
是个坏主意,除非你完全理解它的含义。如果你的服务器这样做了esn响应不快,它会完全挂起页面,在某些浏览器中,它也会挂起其他页面。
async:false
实际上是最后的手段,不应该是您要做的第一件事。我之所以使用async:false,是因为如果isUrlIsImage返回真的(给定url,回调)方法,我将创建动态内容;li标记并在其中附加url…现在我需要确保在调用第二个插件之前完成所有操作,即动态内容在DOM之前准备就绪…现在因为img签入url需要更多时间,ajax功能不会等待…我的整个逻辑失败…我需要确保收到所有isUrlIsImage(给定url,回调)ajax结束前的结果