如何使两个事件在它们之间有延迟地发生
How to get two events to occur with delay between them
那么,我有几个字符串加载到一个名为messages的数组中。我想在没有显示任何消息的半秒周期内循环查看消息。我的代码应该这样做,但由于某种原因它没有。没有文字显示
下面是我的代码: function NextElement()
{
var x = messages.shift();
messages.push(x);
return x;
}
function doer()
{
$("p.message").text(NextElement());
}
function doer2()
{
$("p.message").text("");
}
$( document ).ready(function()
{
setInterval( doer,1000);
setTimeout(function() {}, 500);
setInterval( doer2,1000);
});
如果删除这一行
$("p.message").text("");
消息显示,但不会在半秒后消失。
我正在看这个页面超时是如何工作的,也许我误解了。它似乎不像Java/c#中的thread.sleep()那样工作
正如@Jonathan Lonowski在评论中提到的,这两个间隔基本上是同时运行的。
编辑
的例子:
func1();
setTimeout(CODE, [DELAY]);
func2();
setTimeout
不会破坏上述代码的同步流。
无论[DELAY]
有多长,func1
和func2
函数都可以流畅地执行。setTimeout
实际上只是延迟 CODE
。
function NextElement(){
var x = messages.shift();
messages.push(x);
return x;
}
function doer(){
$("p.message").text(NextElement());
setTimeout(doer2, 1000);
}
function doer2(){
$("p.message").text("");
setTimeout(doer, 500);
}
doer();
JSFiddle
尝试使用.queue()
var messages = ["", "a", "", "b", "", "c", "", "d", "", "e", "", "f", "", "g"],
p = $("p.message");
(function cycle() {
p.delay(500, "messages").queue("messages", $.map(messages, function(msg) {
return function(next) {
$(this).text(msg);
setTimeout(next, 500)
}
})).dequeue("messages").promise("messages").then(cycle)
}())
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<p class="message"></p>
相关文章:
- 关键帧之间的css3动画延迟
- JavaScript/jQuery-添加添加和删除类与下一个函数之间的延迟
- jquery .each 循环来执行每个数组项,它们之间有延迟
- AJAX 调用和表单提交之间的延迟
- foreach循环每次迭代之间的延迟
- 在javascript for循环的迭代之间应用延迟
- 如何在JavaScript中测量交互和mousedown事件之间的延迟
- 在Raphael JS中,不透明度:0和开始动画到不透明度:1之间的延迟
- 使用setTimeout在创建新元素之间强制延迟
- Javascript 或 angularjs 在刷新之间延迟浏览器关闭或选项卡关闭
- Javascript - 循环 3 个函数,每个函数之间有延迟
- 在操作之间发送 Ajax 消息集超时 m 延迟
- 在“for”循环迭代之间添加延迟
- 多边形的创建和显示之间的延迟
- 在jQuery的每次迭代之间应用延迟's.each()方法
- jQuery在列表中添加remove类,两者之间有延迟
- JavaScript/CSS:向DOM添加元素和应用其CSS规则之间的延迟
- JavaScript循环迭代中的POST之间需要延迟
- 为什么我的背景幻灯片动画在更改之间有延迟
- 使用Javascript点击多个链接在同一类,但与延迟之间的每个不同的链接点击