当前位置: 首页 > 面试题库 >

如何在不冻结网页的情况下同步调用Ajax

庞彬
2023-03-14
问题内容

我有一些JavaScript,可以触发对PHP脚本的约100次调用。php脚本会占用大量内存,并需要几秒钟才能完成,然后返回通过或失败的json响应。

我不希望ajax调用是异步的,因为服务器将停止运行其自身的100个实例,因此我尝试使用同步,唯一的问题是它冻结了网页,同时一次调用了一个脚本。

如何一次关闭一个Ajax调用并且不冻结我所在的页面?

var a = [];
    a[0] = 'test';
    a[1] = 'hello';
    a[2] = 'another';

$(document).ready(function(){ 
  $.each(a, function(k,v) {
$.ajax({
  url:'/this-script-takes-a-few-seconds-to-complete.php',
  async:false,
  data: {foo: v},
  success: function(data){      
    console.log(data);  
  }
});
  });
});

问题答案:

您可以放入执行下一个调用的函数,然后从success处理程序中调用该函数,如下所示:

$(function(){ 
  var i = 0;
  function nextCall() {
    if(i == a.length) return; //last call was last item in the array
    $.ajax({
      url:'/this-script-takes-a-few-seconds-to-complete.php',
      data: { foo: a[i++] },
      success: function(data){      
        console.log(data);  
        nextCall();
      }
    });
  }
  nextCall();
});

虽然…更好的方法是不进行100次呼叫,除非这是某种测试套件,否则我将重新研究整个方法。



 类似资料:
  • 本文向大家介绍如何在不使用HTML的情况下创建网站?,包括了如何在不使用HTML的情况下创建网站?的使用技巧和注意事项,需要的朋友参考一下 如果您不了解HTML或CSS,并且想创建一个网站,那么不用担心,您可以轻松创建网站,而无需编写一行HTML代码。 以下是一些无需编写任何HTML或代码行即可构建网站的方法: 网站构造函数 当您购买网站托管计划时,托管公司将为您提供免费的网站构建器选项,以轻松创

  • 我正在使用redux saga。执行分派时,会执行likePost和addPost等函数。 然后每次我使用异步存储。获取令牌的getItem。换句话说,它是重叠的 因为我必须使用jwt令牌 我需要不断传递这样的头到api。这也是重叠 这个怎么用没有冗余,或者说怎么用最方便? 这是我的密码 (saga/post.js) (佐贺/index.js)

  • 问题内容: 使用Selenium WebDriver for Java,是否可以在给定URL的情况下获取网页的HTML? 我知道,一旦在浏览器中加载了网页,就可以使用WebDriver.getPageSource()获得HTML。但是,为了提高效率,是否可以在不先将页面加载到浏览器中的情况下获取HTML? 问题答案: 您可以使用无头浏览器来实现。 无头浏览器是没有图形用户界面的Web浏览器。 该程

  • 问题内容: 如何在Java程序中打开和关闭调试?如何在不重新编译Java程序的情况下打开和关闭调试? 问题答案: 无需使用IDE进行调试 1)您可以使用Assertions编写Java程序。您随时可以启用/禁用它们。 2)您可以使用配置了log4j.properties的日志。在Java程序中,您可以随时指定信息和调试日志,只要您想显示调试或信息日志等信息,就可以在log4j.properties

  • 问题内容: 如何在不刷新页面的情况下更改URL? 我已经用CodeIginer建立了一个网站,我想在我的页面之一中实现AJAX和JQuery。问题是; 当我加载内容时,URL不会改变。 假设我有URL 和另一个URL: 单击按钮时如何将第一个URL更改为第二个URL? 问题答案: 在HTML5中,您可以更改URL: 检查http://spoiledmilk.com/blog/html5-chang