如何避免在AJAX调用中出现ERR_INSUFFICIENT_RESOURCES

Joeventures

自从我尝试使用JavaScript已有一段时间以来,请耐心等待。我正在开发一个提供学生数据报告的应用程序。后端是PHP。

我们用于这些报告的数据库必须不时从中央仓库中刷新。刷新由最终用户决定,由于各种原因(不值得在此处介绍)而无法自动进行。

刷新至少需要10分钟。因此,浏览器坐在那里加载这么长的时间而没有反馈到用户会很痛苦。我认为向用户提供反馈的最佳方法是通过一个简单的JQuery脚本,该脚本使用户始终了解更新进度。

这是脚本:

    var n = 0;
    function increment() {
        n++;
        return n;
    }
    $(document).ready(function() {
        $("#popme").click(function(event) {
            n = 0;
            $.getJSON('/path/to/json_pids', function(data) {
                var numRecords = data.length;
                $("#pop-result").html('<p>' + numRecords + ' records</p>');
                $.each(data, function(row) {
                    $.ajax({
                        url: '/path/to/json_student_info/' + this,
                        success: function() {
                            increment();
                            $("#pop-result").html('<p>' + n + ' / ' + numRecords + ' records</p>');
                        }
                    });

                });
            });
        });
    });

该脚本中发生了什么:

有一个divpop-result该得到更新ID。/path/to/json_pids返回匹配的学生ID的JSON数组。

从那里开始,脚本循环遍历每个记录并调用/path/to/json_student_info/{student_id},但不需要任何回报。第二个URL在后端调用脚本,该脚本在报告数据库中创建/更新该学生的记录。

成功后,脚本应该增加显示的数字,pop-result以便用户可以看到脚本完成的进度。

结果和我的问题

结果有点混乱。JS控制台显示了一整行ERR_INSUFFICIENT_RESOURCES错误。该脚本永远不会完全遍历所有记录。在约11,000条记录中,它可能达到约4,000条,并因此而死。

我觉得我在这里犯了一个菜鸟错误。在过去的几天里,我一直在寻找类似的情况,但没有找到任何有用的方法。我能找到的最好的主意是将数据分成多个块,但我仍然会收到相同的错误和行为。是否有替代/更好的方法来完成我要完成的任务,或者使该脚本在浏览器上的使用强度降低?

战争10ck

我确定以下代码仍会优化,但这是一种受限制的方法:

$(document).ready(function() {
    // Declare variable to hold data...
    var results = [],
        length = 0;

    $("#popme").click(function(event) {

        // Get Data
        $.getJSON('/path/to/json_pids', function(data) {

            // Store returned results in value accessible by all functions
            results = data;
            length = results.length;

            $("#pop-result").html('<p>' + length + ' records</p>');

            processItem();
        });
    });

    function processItem() {
        // Check length, if 0 quit loop...
        if(results.length) {
            // Make a call always referencing results[0] since we're shfiting the array results...
            $.ajax({
                url: '/path/to/json_student_info/' + results[0],
                success: function() {
                    $("#pop-result").html('<p>' + ((length - results.length) + 1) + ' / ' + length + ' records</p>');
                    // Remove the first item to prepare for next iteration...
                    results.shift();
                    // Yay! for recursive functions...
                    processItem();
                }
            });
        }
    }
});

从理论上讲,这应该在上一个项目完成处理后递归调用下一个项目的服务。换句话说,这将使操作看起来像是同步的,因为一次将只处理一次,但是它使用了回调,与async上面提到标志相反,该标志已被弃用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ajax时钟上的net :: ERR_INSUFFICIENT_RESOURCES错误

来自分类Dev

运行jQuery脚本发出Ajax请求2分钟后,出现错误net :: ERR_INSUFFICIENT_RESOURCES

来自分类Dev

在 AWS Lambda 上,使用 puppeteer page.goto 对我来说失败了,net::ERR_INSUFFICIENT_RESOURCES

来自分类Dev

如何避免在keyup事件中出现连续的ajax请求的开销?

来自分类Dev

如何避免在R中出现循环?

来自分类Dev

如何避免网址中出现“ / Home”

来自分类Dev

如何避免RabbitMQ中出现重复消息?

来自分类Dev

如何避免在R中出现循环?

来自分类Dev

如何避免checkListBox中出现重复项

来自分类Dev

如何避免在RRDTool图表中出现空格?

来自分类Dev

如何避免联接查询中出现多行?

来自分类Dev

在调用引发异常的方法时,如何避免在try catch块中出现伪返回?

来自分类Dev

如何避免JavaScript中出现“超出最大调用堆栈大小”错误?

来自分类Dev

在调用引发异常的方法时,如何避免在try catch块中出现伪返回?

来自分类Dev

在Ajax调用中出现类型错误

来自分类Dev

如何避免多次AJAX调用?

来自分类Dev

如何避免多次AJAX调用?

来自分类Dev

从C调用Kotlin回调函数时,如何避免在Kotlin Native中出现错误“ staticCFunction必须接受未绑定的...”?

来自分类Dev

如何避免字符串中出现单引号

来自分类Dev

如何避免铁路由器中出现类似路线?

来自分类Dev

如何避免缩放图像中出现奇怪的结构伪像?

来自分类Dev

如何避免BuildPath中出现循环(特定项目设置)

来自分类Dev

原则迁移:如何避免在postUp步骤中出现SQL错误?

来自分类Dev

如何避免多个<li>中出现双重边框

来自分类Dev

我如何避免在班级图中出现循环关系

来自分类Dev

如何避免在Scala中出现for循环的编译器警告?

来自分类Dev

如何避免在C ++中出现这种for循环混乱?

来自分类Dev

如何避免在纯CSS中出现这种重叠?

来自分类Dev

如何避免PR中出现混乱的git commit

Related 相关文章

  1. 1

    ajax时钟上的net :: ERR_INSUFFICIENT_RESOURCES错误

  2. 2

    运行jQuery脚本发出Ajax请求2分钟后,出现错误net :: ERR_INSUFFICIENT_RESOURCES

  3. 3

    在 AWS Lambda 上,使用 puppeteer page.goto 对我来说失败了,net::ERR_INSUFFICIENT_RESOURCES

  4. 4

    如何避免在keyup事件中出现连续的ajax请求的开销?

  5. 5

    如何避免在R中出现循环?

  6. 6

    如何避免网址中出现“ / Home”

  7. 7

    如何避免RabbitMQ中出现重复消息?

  8. 8

    如何避免在R中出现循环?

  9. 9

    如何避免checkListBox中出现重复项

  10. 10

    如何避免在RRDTool图表中出现空格?

  11. 11

    如何避免联接查询中出现多行?

  12. 12

    在调用引发异常的方法时,如何避免在try catch块中出现伪返回?

  13. 13

    如何避免JavaScript中出现“超出最大调用堆栈大小”错误?

  14. 14

    在调用引发异常的方法时,如何避免在try catch块中出现伪返回?

  15. 15

    在Ajax调用中出现类型错误

  16. 16

    如何避免多次AJAX调用?

  17. 17

    如何避免多次AJAX调用?

  18. 18

    从C调用Kotlin回调函数时,如何避免在Kotlin Native中出现错误“ staticCFunction必须接受未绑定的...”?

  19. 19

    如何避免字符串中出现单引号

  20. 20

    如何避免铁路由器中出现类似路线?

  21. 21

    如何避免缩放图像中出现奇怪的结构伪像?

  22. 22

    如何避免BuildPath中出现循环(特定项目设置)

  23. 23

    原则迁移:如何避免在postUp步骤中出现SQL错误?

  24. 24

    如何避免多个<li>中出现双重边框

  25. 25

    我如何避免在班级图中出现循环关系

  26. 26

    如何避免在Scala中出现for循环的编译器警告?

  27. 27

    如何避免在C ++中出现这种for循环混乱?

  28. 28

    如何避免在纯CSS中出现这种重叠?

  29. 29

    如何避免PR中出现混乱的git commit

热门标签

归档