Javascript 在JS中基于事件以随机时间间隔自动滚动
我正在编写一个Chrome扩展,它可以滚动并侦听新添加的子节点到父节点 然后,它会随机等待一段时间,如果添加了更多的子项,它会再次向下滚动,如果在接下来的5秒钟内没有通过ajax显示任何内容(例如,当结果列表已用尽时),它会停止 我的问题是,我应该如何处理每个事件之间的等待时间 我希望它能有礼貌地工作(但如果同时加载了所有50个元素,并且生成的滚动不足以到达下一个ajax加载点,那么就不能向下滚动)Javascript 在JS中基于事件以随机时间间隔自动滚动,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在编写一个Chrome扩展,它可以滚动并侦听新添加的子节点到父节点 然后,它会随机等待一段时间,如果添加了更多的子项,它会再次向下滚动,如果在接下来的5秒钟内没有通过ajax显示任何内容(例如,当结果列表已用尽时),它会停止 我的问题是,我应该如何处理每个事件之间的等待时间 我希望它能有礼貌地工作(但如果同时加载了所有50个元素,并且生成的滚动不足以到达下一个ajax加载点,那么就不能向下滚动) 我有什么想法或方法来考虑这个问题吗?(顺便说一句,这是一个完全良性的用例)一个好的解决方案有点棘
我有什么想法或方法来考虑这个问题吗?(顺便说一句,这是一个完全良性的用例)一个好的解决方案有点棘手,但完全有效:
var canPoll = true;
var timeout = ... whatever ...; // if we want an absolute timeout
var startTime = (new Date()).getTime();
function randomWait(t) {
// ... waits a random period of time
}
function isDone() {
// ... check if done. returns boolean
}
function complete() {
// ... run when everything is done
}
(function recursive() {
// check for our absolute walltime timeout
canPoll = ((new Date).getTime() - startTime) <= timeout;
// check other conditions too
if (!fn() && canPoll) {
// repeat!
setTimeout(recursive, randomWait(interval));
} else {
// we're done
complete();
}
})();
var canPoll=true;
变量超时=。。。不管怎样…;//如果我们想要一个绝对超时
var startTime=(新日期()).getTime();
函数随机等待(t){
//…随机等待一段时间
}
函数isDone(){
//…检查是否完成。返回布尔值
}
函数完成(){
//…一切完成后再运行
}
(函数递归(){
//检查我们的绝对墙时间超时
canPoll=((新日期).getTime()-startTime)一个好的解决方案有点棘手,但完全有效:
var canPoll = true;
var timeout = ... whatever ...; // if we want an absolute timeout
var startTime = (new Date()).getTime();
function randomWait(t) {
// ... waits a random period of time
}
function isDone() {
// ... check if done. returns boolean
}
function complete() {
// ... run when everything is done
}
(function recursive() {
// check for our absolute walltime timeout
canPoll = ((new Date).getTime() - startTime) <= timeout;
// check other conditions too
if (!fn() && canPoll) {
// repeat!
setTimeout(recursive, randomWait(interval));
} else {
// we're done
complete();
}
})();
var canPoll=true;
var timeout=…无论什么…;//如果我们想要一个绝对超时
var startTime=(新日期()).getTime();
函数随机等待(t){
//…随机等待一段时间
}
函数isDone(){
//…检查是否完成。返回布尔值
}
函数完成(){
//…一切完成后再运行
}
(函数递归(){
//检查我们的绝对墙时间超时
canPoll=((新日期).getTime()-startTime)为什么不setTimeout()
和clearTimeout()
?为什么不setTimeout()
和clearTimeout()
?