【问题标题】:stop executing another before one gets completed in jquery在 jquery 完成之前停止执行另一个
【发布时间】:2017-11-29 15:32:49
【问题描述】:

我在 jquery 的 for 循环中使用 $.ajax。

for(var i=0; i < 2; 1++)
{

$.ajax({
url :"/models/getdata"+i
dataType:"json"
success:function(data)
{
}
});

}

i=0 的成功函数之前; i=1 来执行此值的 ajax 请求。我希望下一次迭代需要等到当前迭代完成。

这意味着一个 ajax 请求成功完成,然后它会增加 i 值然后开始下一次迭代。

还要考虑另一种情况

function A()
{
$.ajax code

}
/////another operation

这里函数 A() 需要等到它的 ajax 发布完成。但在我的情况下,它会转到下一个代码开始执行,如何在当前函数完成之前停止进一步执行。就像 C# 中的睡眠概念

我该怎么做?

谢谢,

湿婆

【问题讨论】:

    标签: javascript jquery ajax


    【解决方案1】:

    一个简单的通用解决方案:

    var i=0;
    (function doOne(){
        $.ajax({
            url :"/models/getdata"+i
            dataType:"json"
            success:function(data){
                if (++i<2) doOne();
            }
        });
    })();
    

    对于第二种情况,您可以使用 $.ajax 返回的deferred

    function A() {
       return $.ajax(...)
    }
    
    A().done(function(){
       // some code executed after the ajax call finished
    });
    

    【讨论】:

      【解决方案2】:

      在ajax调用中设置async: false

      【讨论】:

      • aync 属性用于指定是否完整帖子或 ajax 帖子不适用于此。
      • 不,如果不先执行 ajax 请求,它就不会走得更远!这就是为什么异步错误
      【解决方案3】:

      此方法可能是处理此问题的最佳方法。

      $.when(*AJAX CALL*)
          .then(function() { // Function to run after ajax is completed
      });
      

      【讨论】:

        【解决方案4】:

        默认情况下,当我们使用$.ajax时,所有请求都是异步发送的。我的意思是异步,Web 应用程序可以向服务器(在后台)发送数据和从服务器检索数据,而不会干扰现有页面的显示和行为。但是您希望在您的请求完成之前停止执行,因此请将 async 设置为“false”。

        使用这个 -

        $.ajax({
            url :"/models/getdata"+i
            dataType:"json",
            async: false,
            success:function(data)
            {
            }
         });
        

        【讨论】:

        • 异步有什么用:false?
        • 它确保在此 ajax 调用完成之前不会执行下一行
        • @SivaRajini 然后使用dystroy解决方案。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多