Javascript顺序执行
嗨,我无法按顺序执行javascript。事件是如何触发的。即使语句按顺序放置,执行也是疯狂的 我需要从6到0的倒计时数字,然后在Div标记中显示随机字符串 JSfiddleJavascript顺序执行,javascript,html,jquery,Javascript,Html,Jquery,嗨,我无法按顺序执行javascript。事件是如何触发的。即使语句按顺序放置,执行也是疯狂的 我需要从6到0的倒计时数字,然后在Div标记中显示随机字符串 JSfiddle 它遵循异步执行模式,因为您使用的是setTimeout 这里的解决方案是使用回调,它将在倒计时完成后调用,并使用回调显示文本 function counter($el, n, callback) { (function loop() { $el.html(n); if (n--)
它遵循异步执行模式,因为您使用的是
setTimeout
这里的解决方案是使用回调,它将在倒计时完成后调用,并使用回调显示文本
function counter($el, n, callback) {
(function loop() {
$el.html(n);
if (n--) {
setTimeout(loop, 1000);
} else {
callback();
}
})();
}
//Sequential execution (i need the count down first then the strings)
$("div").html(counter($("div"), 6, function(){
$("div").html(questions()).fadeIn('slow');
})).fadeIn('slow');
演示:理解此代码执行的关键是要认识到计数器()仅在执行一次循环后立即返回。在计数器内部定义的loop()在浏览器的事件循环中以1秒的间隔调用。在它运行n个循环之后,它将调用回调。谢谢你,阿伦,但是如果我只想在开始时显示计数器,并在一段时间延迟后重复显示问题,该怎么办。。。
function counter($el, n, callback) {
(function loop() {
$el.html(n);
if (n--) {
setTimeout(loop, 1000);
} else {
callback();
}
})();
}
//Sequential execution (i need the count down first then the strings)
$("div").html(counter($("div"), 6, function(){
$("div").html(questions()).fadeIn('slow');
})).fadeIn('slow');