首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从服务器鼠标轮上提取数据?

从服务器鼠标轮上提取数据?
EN

Stack Overflow用户
提问于 2020-02-17 09:56:19
回答 1查看 32关注 0票数 0

我有一个POST请求,根据用户通过number inputs可调的参数,从服务器中提取数据。仅仅侦听change事件是不够的,因为我希望在使用鼠标轮更改输入值时刷新数据。

用这样的方式调用我的刷新函数显然不是最优的:

代码语言:javascript
运行
AI代码解释
复制
$('input').on('mousewheel', function(){
    refresh_data();
});

会有很多请求,因为它们是异步的,所以我永远不知道最后要完成的请求是否是我发送的最后一个请求。

我目前使用的是一个setInterval来查看包含请求刷新的间隔(圆形时间戳)的对象。在mousewheel侦听器中,我向对象添加下一个间隔,作为属性/键,以避免重复。

就像这样:

代码语言:javascript
运行
AI代码解释
复制
var i = 100;
var obj = [];

$('input').on('mousewheel', function(){
    // add next interval to obj;
    obj[Math.ceil(Date.now()/i)*i] = true;
});

var check = setInterval(function(){
    // refresh if current interval is in obj
    var t = Math.floor(Date.now()/i)*i;
    if(obj[t]){
        delete obj[t]; // remove from obj
        refresh_data();
    }
}, i);

我在我的机器上用i=50测试了这段代码,对象总是空的,这正是我们想要的,但是使用i=30,一旦我太快地使用轮子,我就会看到对象中积累了一些旧的时间间隔。这是由setInterval跳过节拍引起的,因此无论我为i选择什么值,一些CPU较少的用户都可能“跳过错误的节拍”,并最终看到不匹配参数值的鼠标轮移动。

我觉得可能是我让事情变得更复杂了,所以我想问:

考虑到从服务器鼠标轮上提取数据的最好方法是什么:

1:当用户在输入字段上滚动轮子时,我希望不断地刷新数据。

2:我想成为100%,确定提供的数据后的车轮运动总是精确的。

EN

回答 1

Stack Overflow用户

发布于 2020-02-17 10:08:59

尝试像下面的代码那样使用文档偏移值。这将在用户向下滚动并到达滚动结束时工作。这种行为有点像回收者对android的看法。

代码语言:javascript
运行
AI代码解释
复制
window.onscroll = function(ev) {
      if ((window.innerHeight + window.pageYOffset ) >= 
      document.body.offsetHeight) {
           alert("you're at the bottom of the page");
     }
  };
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60268064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档