javascript - 为什么我的 javascript/jquery 没有按顺序执行?

标签 javascript loops jquery jquery-blockui

我有一个绑定(bind)到点击处理程序的按钮——它会根据数组中的项目数量进行一个或多个 AJAX 调用。我用 blockUI jquery plugin在进行 ajax 调用时显示一条消息,然后我显示结果,并通过调用 $.unblockUI(); 删除 blockUI 消息。

问题:出于某种原因,无论我希望 ajaxCall 函数执行多少次,在第一个 ajax 调用完成后,即使循环仍在继续执行,消息也会被删除,并且结果在#results div 中正确显示。我希望在删除消息之前完成全部循环迭代,但它似乎没有按顺序执行。这是有问题的代码:

$("#myButton").live("click", function(){
    $.blockUI({ message: '<img src="new_loader.gif" /><h2>Getting Config Files</h2><small>Please be patient.</small>',
            css: { 
            border: 'none', 
            padding: '15px', 
            backgroundColor: '#FFF', 
            '-webkit-border-radius': '10px', 
            '-moz-border-radius': '10px',  
            color: '#000' 
            } 
        }); 

    for (var i=0; i< myArray.length; i++)
        {
         ajaxCall(myArray[i]);
        }
    $("#results").show('slow');
    $.unblockUI();  
    return false;
});

是否有解释为什么即使循环尚未完成,循环后的代码仍在执行?任何帮助它表示赞赏!谢谢。

最佳答案

 ajaxCall(myArray[i]);

异步完成的,因此该方法在循环内触发,但执行会花费更多时间,因此在其余代码已完成。

在这篇文章中找到了一种处理这种行为的好方法: Asynchronous method queue chaining in JavaScript

关于javascript - 为什么我的 javascript/jquery 没有按顺序执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4854578/

相关文章:

javascript - 如何使用javascript将jpg图像转换为png

javascript - 如何允许轻松覆盖 JavaScript 函数中的默认选项?

PHP 同时中断和继续

java - 为什么我的 for 循环只完成一次任务?

javascript - jquery的微小实现

javascript - 未捕获的类型错误 : Failed to execute 'appendChild' on 'Node' : parameter 1 is not of type 'Node' .

javascript - 我如何在此处的 map 中添加自定义图像标记?

c++ - std::list 中每种特定类型的对象数

javascript - HTML 未在弹出内容的 Bootstrap 中执行

javascript - 有没有一种方法可以单击 Canvas 中的特定点/元素(使用 javascript、jquery 或 selenium)