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,所以第二次迭代出现在第一次!!我想要第二次在最后一次迭代后等待一秒(随机时间)。我能解释我自己吗?