【发布时间】:2017-06-09 02:13:01
【问题描述】:
我在做的是页面加载时调用两个ajax请求
fetch_list_big();
fetch_list_small();
function fetch_list_big(){
$.post(...);
}
function fetch_list_small(){
$.post(...);
}
顾名思义,fetch_list_big() 中的请求比fetch_list_small 需要更多时间来完成。
但是由于首先调用了fetch_list_big,所以fetch_list_small 表示挂起,直到fetch_list_big 返回200。
big.php
require_once('files_same.php'); #starts session /connection / configurations etc
#Some heavy mysql stuff #say 5 seconds
echo json(...)
small.php
require_once('files_same.php'); #starts session /connection / configurations etc
#Some light mysql stuff #say 1 seconds
echo json(...)
我怎样才能在fetch_list_big() 之后以并行方式调用fetch_list_small() 而不使其挂起?
待处理的请求
http://i.imgur.com/vj07tyI.png
第一个请求很大,服务器需要 5 秒
最后 3 个是小请求,应该在第一个之前返回,但它们处于等待状态。
第一次请求返回 200 后
http://i.imgur.com/liPuO70.png
第一次请求返回 200 后。执行最后 3 个请求。
问题
我希望所有请求在不锁定服务器的情况下并行运行(某种会话被锁定了吗?)
【问题讨论】:
-
为什么你认为
fetch_list_small等待fetch_list_big完成?除非您明确告诉 jquery 执行同步请求,否则它们都应该以 async 方式执行 -
这就是我问这个问题的原因。它的异步顺便说一句
-
你可以将你的小函数包装成
setTimeout -
那我不明白你在问什么。两个请求并行执行(异步)。有什么问题?
-
看到我用截图更新了问题@hindmost
标签: javascript php jquery ajax session