这是一个小提琴--- http://jsfiddle.net/mFrbA/2/
这只是下面代码的测试。我正在尝试使其缓慢,稳定地一直向下滚动。我不直接通过直接滚动到文档底部来执行它的原因是因为我想逐步执行它,同时让用户有机会取消它(因此scrolling
,可以切换该变量通过外部功能。
该wait
变量的原因是(理论上)防止while循环比动画更快地循环-我不确定它是否会在重新开始之前等待动画结束。但是,完整的功能永远不会被调用,动画也永远不会发生。
但是,这些都没有执行。我不确定自己在做什么错。
$(function() {
scrolling = true;
while (scrolling) {
var wait = true;
$('html, body').animate(
{ scrollTop: '+=50' },
{ duration: 800,
easing: 'linear',
complete: function(){
alert("hi again");
wait = false;}
}
);
while(wait) {
console.log("waiting");
}
}
});
浏览器中的JavaScript是单线程(实际上)是带有事件循环的。您while(wait)
绑定了JavaScript的执行,因此动画(异步)永远不会发生。
这就是我们有回调的原因,除了可怕的setInterval
事情外,几乎没有其他解决方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句