Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery$.get()正在阻止其他请求_Javascript_Jquery_Html_Http_Request - Fatal编程技术网

Javascript jQuery$.get()正在阻止其他请求

Javascript jQuery$.get()正在阻止其他请求,javascript,jquery,html,http,request,Javascript,Jquery,Html,Http,Request,我正在开发一个web应用程序,并使用jQuery向我的API发出异步HTTP请求。我有一个详细视图,您可以在其中看到存储在数据库中的特定对象的大量信息。因为有很多信息和数据链接到其他对象,所以我对API进行不同的调用,为视图收集不同的信息 在“细节视图”中,我有一些小部件显示所请求的信息。为此,我向API发出大约5-7个HTTP GET请求。使用调试器(Safari和Firefox)时,我可以看到一些请求正在阻止其他请求,页面需要花费大量时间才能加载所有内容并显示给用户 我提出这样的要求: $.

我正在开发一个web应用程序,并使用jQuery向我的API发出异步HTTP请求。我有一个详细视图,您可以在其中看到存储在数据库中的特定对象的大量信息。因为有很多信息和数据链接到其他对象,所以我对API进行不同的调用,为视图收集不同的信息

在“细节视图”中,我有一些小部件显示所请求的信息。为此,我向API发出大约5-7个HTTP GET请求。使用调试器(Safari和Firefox)时,我可以看到一些请求正在阻止其他请求,页面需要花费大量时间才能加载所有内容并显示给用户

我提出这样的要求:

$.get("api/api.php?object=myobject&endpoint=someendpoint", function(data) {
    // data is JSON formatted
    $("#my-widget input").val(data["name"]);
});
$.get("api/api.php?object=anotherobject&endpoint=anotherendpoint", function(data) {
    // data is JSON formatted
    $("#other-widget input").val(data["somekey"]);
});
还有一个,例如:

$.get("api/api.php?object=myobject&endpoint=someendpoint", function(data) {
    // data is JSON formatted
    $("#my-widget input").val(data["name"]);
});
$.get("api/api.php?object=anotherobject&endpoint=anotherendpoint", function(data) {
    // data is JSON formatted
    $("#other-widget input").val(data["somekey"]);
});
如果第一个请求的完成时间稍长,它将阻止第二个请求,直到第一个请求的回调函数完成。但是为什么呢?我认为这些调用是异步和非阻塞的

我想为一家公司构建一个快速的web应用程序,该公司的请求仅在本地网络中发出,因此请求只需10-50ms(甚至更短)。但是页面显示所有信息大约需要10秒钟

我做错什么了吗?或者是否有一个JavaScript框架可以用于解决这个问题?感谢您的帮助

编辑:正如您在屏幕截图中所看到的,请求必须等待几秒钟,如果请求被触发,则需要几秒钟才能返回响应

如果我直接在浏览器中调用URL,或者使用
curl
执行GET请求,速度会快得多

编辑2:谢谢@CBroe!会话文件写入锁定是问题所在。只要会话文件被锁定,在上一个脚本完成之前,就不能运行其他脚本。我刚刚在
session\u start()
之后立即调用了
session\u write\u close()
,它现在运行得更快了


注意:仅当您不需要写入
$\u会话
数组时,才使用
会话写入关闭()。在那之后,阅读是可能的,但写作是不可能的。(有关更多详细信息,请参阅本主题:)

是否可以检查“网络”选项卡?它如何阻止第二个请求?您的服务器是否可能一次只处理一个请求,以便第二个请求需要等待第一个请求的响应?PHP会话文件写锁通常会导致这样的问题;有关更详细的解释,请参阅。@beeef查看第二个请求何时启动:如果它直接启动,但在第一个请求结束前被暂停,则它可能链接到您的后端。您应该使用浏览器的“开发人员工具”的“网络”选项卡进行检查that@beeef没错,但你需要确定。可能有你看不到的代码,它正在做你不期望的事情。该设置可以为以后的所有呼叫进行全局更改。可能值得尝试使用扩展调用语法
$.ajax()
并显式指定
async:true