Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >JQuery在Chrome中搁置和等待ajax请求

JQuery在Chrome中搁置和等待ajax请求
EN

Stack Overflow用户
提问于 2015-01-18 05:25:43
回答 5查看 46K关注 0票数 24

偶尔,我在应用程序中的Ajax调用(通过JQuery 1.8)会被状态“挂起”很长一段时间(有时长达17分钟)。我在谷歌上搜索过,所有可能的解决方案都没有奏效:

  1. 我没有安装广告拦截程序。
  2. 我在Chrome中禁用了“预测网络操作以提高页面加载性能”标志。
  3. 我还向Ajax调用中添加了一个查询字符串,以使其惟一(禁用任何Chrome缓存锁定)。

你知道怎么解决这个问题吗?

在下面的示例中,请求挂起了17分钟(通过Fiddler验证,请求只在17分钟后发送)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   GET http://www.mywebsite.com/foo/rest/publishers/1/packages?_=1421584749323    HTTP/1.1
   Host: www.mywebsite.com
   Connection: keep-alive
   Accept: application/json, text/javascript, */*; q=0.01
   X-Requested-With: XMLHttpRequest
   User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36    (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36
   Content-Type: application/json
   Referer: http://www.mywebsite.com/foo/client/home
   Accept-Encoding: gzip, deflate, sdch
   Accept-Language: en-US,en;q=0.8,he;q=0.6,ru;q=0.4
   Cookie: JSESSIONID=C668509B5AFCDEBE9C9774C4721AFB9D;
   aaassz="ddss"

见图:

EN

回答 5

Stack Overflow用户

发布于 2016-06-20 09:01:05

我偶然发现了同样的问题。一旦我残疾:

使用预测服务更快地加载页面

高级设置->隐私->约第3复选框,一切都开始工作,它应该。我无法重现这个错误。

jquery/ajax计票器在火狐中运行得很好。它只在Linux和Windows上进行Chrome测试。

这不是一个完美的解决方案,因为它不会影响全球意义上的用户--但也许你与我有限的受众处于同样的情况。

票数 8
EN

Stack Overflow用户

发布于 2015-05-05 21:51:23

你可以试试这个。

现在用实际的工作代码更新

(使用我自己的一些时区代码,所以请原谅对时区的引用)

首先初始化数组并运行请求计数逻辑。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var request = ( typeof request != 'undefined' && request instanceof Array ) ? request : [];
var pendingAjax = ( typeof pendingAjax != 'undefined' && pendingAjax instanceof Array ) ? pendingAjax : [];

使用https://api.jquery.com/ajaxStart/https://api.jquery.com/ajaxStop/跟踪活动请求。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var ajaxActive = 0;
$( document ).ajaxStart(function() {
  ajaxActive++;
  document.ajaxQueueFull = ajaxActive > 5;
});
$(document).ajaxStop(function() {
  ajaxActive--;
  document.ajaxQueueFull = ajaxActive > 5;
}

创建一个函数来构建新的请求

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    function ajaxRequestNew(t, u, d, s) {

        var instance = request.length + 1;
        request[instance] = $.ajax({
            method: t,
            url: u,
            data: {ajaxPost: d },
            success: s
        });
        return instance;
    }

现在,创建获取返回实例号的请求。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    var instance = ajaxRequestNew('POST', 
                                  'js/ajax_timezone.php', 
                                  { ajaxAction : "ajaxGetTimezone", 
                                    tzoffset : "0", 
                                    tztimezone: "America/New_York" },
                                    function(data) {  }
    );

函数返回一个$.ajax对象。因此,我们使用while循环来检查ajax何时实际被发送,并在请求停止时中止其他活动请求。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    while(request[instance] === null || (request[instance].readyState < 1 || request[instance].readyState > 4)) {
        if (document.ajaxQueueFull) {
            //abort existing requests
            $.each(request, function(i,v) {
                if (i !== instance) {
                    request[i].abort();
                }
            });
        }
    }

将请求推到堆栈上。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    pendingAjax.push(request[instance]);

为请求创建回调

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  var timezoneFailCallback = function(data) {
        console.log('fail');
        console.dir(data);
    };

    var timezoneSuccessCallback = function(data) {
        console.log('success');
        console.dir(data);
    };

使用何时应用回调

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    $.when.apply($, pendingAjax).done( timezoneSuccessCallback ).fail( timezoneFailCallback);

这段代码可能需要对你的应用程序做一些调整,但希望你能得到这个想法。如果你有任何问题,请告诉我。

票数 4
EN

Stack Overflow用户

发布于 2018-08-16 10:50:49

我知道这是一条古老的帖子,但我把这条帖子贴给了那些急于找到答案的人。我也得处理这个抓头的问题。我的问题是由于广告阻滞剂阻塞了一个API调用,其中包含了“优惠券”这个词。它在阻止请求的同时保持它的活力。经过几个街区之后,每个请求都会自动进入待定状态,因为有太多(我认为大约有6或7个)实时请求。

在铬地址栏中键入chrome ://internals/#events来检查请求。这将使你对这个问题有一个更清晰的认识。我附上了两张照片,这是我试图弄清楚这件事时拍摄的。

调试器截图

net-内部截图

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28010156

复制
相关文章
[剑指offer] 斐波那契数列
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 n<=39
尾尾部落
2018/09/04
6480
斐波那契数列
如果使用递归求解,会重复计算一些子问题。例如,计算 f(4) 需要计算 f(3) 和 f(2),计算 f(3) 需要计算 f(2) 和 f(1),可以看到 f(2) 被重复计算了。
MickyInvQ
2022/05/06
4240
斐波那契数列
斐波那契数列
我们都知道斐波那契数(也叫兔子数)是一组十分有趣的数字,首相为1,第二项也是1,之后的每一项就是前两项之和,那么该如何实现输入第n项就打印其对应的斐波那契数字呢?
用户9996207
2023/01/13
4990
斐波那契数列
斐波那契数列的第n+2项同时也代表了集合{1,2,...,n}中所有不包含相邻正整数的子集个数。
饶文津
2020/05/31
7020
斐波那契数列
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、…… 如果设F(n)为该数列的第n项(n∈N*),那么这句话可以写成如下形式::F(n)=F(n-1)+F(n-2) 显然这是一个线性递推数列。 代码实现
呆呆
2021/10/06
3920
斐波那契数列
斐波那契数列【别名黄金分割数列、兔子数列】 斐波那契数列的特点:第1,2两个数为1,1。从第三个数开始,该数是其前两个数之和。
司六米希
2022/11/15
5330
斐波那契数列
斐波那契数列
斐波那契数列的核心就是F(N) = F(N-1) + F(N-2),一般看到的都会采用递归,但是如果使用循环来实现且进行对比,容易发现不少对真是性能的影响
忧愁的chafry
2022/10/30
4600
斐波那契数列
斐波那契数列和斐波那契数
        斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)
会洗碗的CV工程师
2022/11/29
7560
斐波那契数列和斐波那契数
[每日一题]斐波那契数列
问题 1131: 【C语言训练】斐波纳契数列 题目描述 斐波纳契数列 1,1,2,3,5,8,13,21,34,55,89……这个数列则称为“斐波纳契数列”,其中每个数字都是“斐波纳契数”。 输入 一个整数N(N不能大于40) 输出 由N个“斐波纳契数”组成的“斐波纳契数列”。 样例输入 6 样例输出 1 1 2 3 5 8 提示 这类题目可能会涉及一些数学知识、逻辑锻炼、模拟问题等等,需要大家对C语言语法能熟练运用之后用来训练提高。 也可以自行查找知识,不明白可以在讨论版中讨论学习。
编程范 源代码公司
2018/04/16
8370
斐波那契数列
递归求解方法 class Solution { public: int fib(int n) { if (n == 0) return 0; if (n == 1) return 1; return fib(n - 1)+fib(n - 2); } };
大忽悠爱学习
2022/05/05
4480
斐波那契数列
斐波那契数列
问题斐波那契数列。(斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……。前两项相加等于第三项)
算法与编程之美
2022/02/17
6160
斐波那契数列
斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:
木子星兮
2020/07/17
7060
斐波那契数列
#include <iostream> using namespace std; int n,a,b,p; int f(int x){ if(x <= 2){ return 1; } return (a*f(x-1)+b*f(x-2))%p; } int main() { cin>>n>>a>>b>>p; cout<<f(n)<<endl; return 0; }
且陶陶
2023/04/12
3360
斐波那契数列
斐波那契数列
斐波那契数列,1,1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 , 55 , 89, 144,. 如果设F(n)为该数列的第n 项( n ∈N* ),那么数列有如下形式,F(n)=F(n-1)+F(n 2)。
砖业洋__
2023/05/06
2330
斐波那契数列
刷抖音突然刷到了斐波那契数列,突发奇想就用java写一个斐波那契数列。虽然很早之前学习算法,这应该是最基本的,但是对于一个干着普普通通工作的我已经是需要深思熟虑一番。
cultureSun
2023/09/02
2560
斐波那契数列
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项. public class Fibonacci { public static int[] record = null; public int Fibonaci(int n){ if(n<=1){ return n; } if(null == record){ record = new int[n+1];
用户3003813
2018/09/06
3910
[算法] - 斐波那契数列
牛客网 NC65-斐波那契数列 两种实现 迭代 public class Solution { public int Fibonacci(int n) { if(n == 0 || n == 1){ return n; } int a = 0; int b = 1; int fib = 0; for(int i = 2; i <= n; i++){
夹胡碰
2021/06/17
8050
斐波那契数列的N种算法
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)。
用砖头敲代码
2022/08/30
2960
Python|斐波那契数列
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……
算法与编程之美
2020/04/20
8110
Python|斐波那契数列
打印 斐波那契数列
方法一;递归(可以达到逐个输出的目的) public class FibonacciTest { public long fibonacci(long number){ if (number==0||number==1){ return number; }else{ // 该方法里调该方法 return fibonacci(number-1)+fibonacci(number-2);
传说之下的花儿
2023/04/16
1610

相似问题

如何将output子文件夹设置为在生成时将引用dll复制到

15

如何将生成的图形复制到子文件夹?

20

如何将nupkg从生成过程复制到删除文件夹

11

如何使生成将内容从引用库复制到IIS express文件夹?

24

如何将文件复制到时间戳自动生成的文件夹?

27
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文