Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.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不';行不通_Javascript_Jquery_Ajax_Delay - Fatal编程技术网

Javascript 延迟jquery不';行不通

Javascript 延迟jquery不';行不通,javascript,jquery,ajax,delay,Javascript,Jquery,Ajax,Delay,嗨,伙计们,我不知道为什么我的计时功能不起作用。考虑下面的代码… $( document ).ready(function() { $.ajax({ type: 'GET', url: 'conversation.json', dataType: 'json', success: function (data) { var conversation = data.conversation1;

嗨,伙计们,我不知道为什么我的计时功能不起作用。考虑下面的代码…

$( document ).ready(function() {
    $.ajax({
        type: 'GET',
        url: 'conversation.json',
        dataType: 'json',
        success: function (data) {
            var conversation = data.conversation1;
            $.each(conversation, function(i, user) {
                setTimeout(function () {
                    $('<li>').attr({
                        class : 'list-group-item',
                    }).text(user.nombre + " : " + user.text).
                    appendTo('#messages');
                }, 3000);
            });
        }
    });
});
$(文档).ready(函数(){
$.ajax({
键入:“GET”,
url:'conversation.json',
数据类型:“json”,
成功:功能(数据){
var conversation=data.conversation1;
$.each(会话、功能(i、用户){
setTimeout(函数(){
$(“
  • ”).attr({ 类:“列表组项”, }).text(user.nombre+“:”+user.text)。 附加到(“#消息”); }, 3000); }); } }); });
  • 我通过ajax获得了一个json,我想通过创建1秒或2秒的时间来显示每条消息,它可以工作,但只是第一次,但在那之后,所有消息都会同时显示

    如果有人能帮助我,请理解发生了什么事


    谢谢你们,我会继续搜索的(

    只需将
    循环中的超时延迟乘以迭代计数,即可使其显示为每条消息的递增延迟。请注意以下事项

    $.each(conversation, function(i, user) {
        setTimeout(function () {
            $('<li>').attr({
                class : 'list-group-item',
            })
            .text(user.nombre + " : " + user.text)
            .appendTo('#messages');
        }, 3000 * (i + 1)); // 3000, 6000, 9000 etc.
    });
    
    $。每个(会话、功能(i、用户){
    setTimeout(函数(){
    $(“
  • ”).attr({ 类:“列表组项”, }) .text(user.nombre+“:”+user.text) .appendTo(“#messages”); },3000*(i+1));//3000、6000、9000等。 });

  • -简化演示

    您正在为对话中的每个用户设置3秒的超时。所有超时将在3秒后过期(因此它们将在3秒后同时显示)您是否能够解决此问题?我的答案是否能够为您指出正确的方向?请注意操作。根本问题是您的
    $.each()
    出于本次讨论的目的,循环或多或少是瞬时运行的。您正在为循环的每次迭代设置一个相同的超时值,这意味着第一项可能在循环启动后3000ms执行,第二项可能在循环启动后3001ms执行,第三项可能在3002ms执行,等等。(在这里,我通常将单个循环迭代等效为1 ms,这可能比实际循环迭代时间慢)是的,现在我明白了,但举例来说,我该如何做下一步。我想要一个随机时间问题是,如果某个数字在第一次迭代时给了我2s,第二次iter给了我s1,所以第二次迭代出现在第一次!!我想要第二次在最后一次迭代后等待一秒(随机时间)。我能解释我自己吗?