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

jQuery / ajax循环SetTimeout

赏高格
2023-03-14
问题内容

嗨,我被困在我的setTimeout函数上。我想做的是为我的检索对话功能循环setTimeout。我已经在setInterval上尝试过,但是对我的应用程序使用setInterval是一个坏消息,这就是为什么我切换到setTimeout的原因。但是我似乎无法弄清楚加载完成后如何使setTimeout再次工作..这是我到目前为止已经尝试过的事情,但现在仍在尝试使其工作..

Javascript:

id = setTimeout(function()
{
    $.ajax(
    {
        url: "includes/handlechat.php",
        type: "GET",
        data: data,
        dataType: 'json',
        success: function(result)
        {
            $("#clog").empty();
            $.each(result, function(rowKey, row) 
            {
                $("#clog")
                    .append('<p ><h4>'+ row.username +':</h4>' + row.message_content + '</p>' );
            });
        },
        complete: function () 
        { 
            clearTimeout(id);
        }
    })
}, 1101);

有什么提示或建议吗?


问题答案:

代码放入函数中,并在成功或完整处理程序中调用它:

function load() {
    setTimeout(function () {
        $.ajax({
            url: "includes/handlechat.php",
            type: "GET",
            data: data,
            dataType: 'json',  
            success: function (result) {
                $("#clog").empty();
                $.each(result, function (rowKey, row) {
                    $("#clog").append('<p ><h4>' + row.username + ':</h4>' + row.message_content + '</p>'); 
                }); 
            },
            complete: load
        });
    }, 1101);
}
load();

您还可以使用IIFE避免在当前环境中创建另一个绑定:

(function load() {
   // setTimeout here
}());


 类似资料:
  • 问题内容: 我是AJAX的新手,我正在编写一个用户脚本,该脚本将处理页面上的一堆链接并为每个链接进行AJAX调用。 简单地说,我有一个包含链接列表的页面。我希望遍历链接并获取AJAX来处理每个链接页面的内容,并报告该页面是否包含指定内容。 我遇到的问题是用于遍历linkList的[i]的值始终为6,应该永远不会。我假设我需要传递一些数据,以便当.done最终触发时,它从AJAX首次触发时知道其[i

  • 问题内容: 此js循环脚本始终会在jquery ajax函数中获取ui_item的最后一个值。如何捕获每次迭代的正确值? 谢谢! 问题答案: 问题在于匿名回调方法通过引用捕获变量。由于只有一个变量,因此它总是会得到最后分配给该变量的任何内容。 您需要将循环的内容包装在作为参数的函数中,然后在循环中调用该函数。每次对包装函数的调用都会创建一个单独的变量,以解决问题。 例如:

  • 问题内容: 我想知道为什么在 i 变量下面的代码中 仍然显示“ 5” 而不是显示 “ 1” 然后 “ 2” 然后 “ 3” ,依此类推?必须是一个范围问题,但由于在全局和dom范围中更改了i变量的范围,但仍然遇到相同的问题,因此我并没有真正了解它。当我提醒 我 的AJAX功能外,它工作得很好。 这是小提琴 编辑: 我选择了 @Tushar Gupta 解决方案,因为它最适合我的需要,但是又遇到了另

  • 问题内容: 事情是:我有一个页面,其中必须显示未确定数量的图像,这些页面是通过AJAX(在服务器端使用base64编码)一张一张地加载的。 问题是仅当获取所有图像时,才将图像(由renderImageData()函数构造)附加到所有DIV中(一起)。我的意思是,直到循环结束,才有可能进行任何DOM操作。 由于可能会有大量的图像,因此我需要一张一张地加载和显示图像,因此我无法将它们堆叠起来,直到将它

  • 问题内容: 因此,我将顺序的ajax链接在一起,以按顺序加载URL数组。最初,我使用代替,并且无论哪种方式都可以正常工作- 只要所有网址都存在。但是,由于可能会丢失文件,因此我想对此进行补偿,然后,最后通知用户丢失了哪些文件,以便更轻松地进行纠正。 但是,问题是,在丢失的文件/ 404上,代码会像应执行的那样执行,但随后退出循环,从而阻止了进一步的ajax调用。因此,我认为,我需要某种方式来处理并

  • 问题内容: 在jQuery AJAX成功回调上,我想遍历对象的结果。这是响应在Firebug中的外观的一个示例。 如何遍历结果,以便可以访问每个元素?我已经尝试过类似下面的操作,但这似乎不起作用。 问题答案: 您可以删除外循环并替换为: 您接近: 您有一个对象/贴图数组,因此外循环遍历这些对象/贴图。内部循环遍历每个对象元素上的属性。