首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当滑块的值发生变化时,发出HTTP请求的正确方法是什么?

当滑块的值发生变化时,发出HTTP请求的正确方法是什么?
EN

Software Engineering用户
提问于 2017-09-07 16:18:03
回答 2查看 1.2K关注 0票数 6

我正在为智能无线照明系统设计基本软件。该软件是基于GUI的,我有一个滑块的亮度设置在我的GUI。照明系统有一个HTTP,因此我可以监听滑块值上的更改,并向系统发出带有RESTful值的HTTP请求。问题是,在每次改变值的情况下,提出新的HTTP请求似乎是非常幼稚的。

例如,如果用户将滑块值从70更改为20,软件将发出50个HTTP请求。

人们是如何处理这种问题的?我是否在每个请求之后等待一个定义的持续时间?什么是克服几乎100次请求的最佳做法?

EN

回答 2

Software Engineering用户

回答已采纳

发布于 2017-09-07 17:11:23

这取决于您打算如何提供反馈,以及硬件控制器的响应速度。处理这个问题的方法不止一种,解决方案的正确性实际上取决于用户的期望。事实上,潜在的解决方案并不是相互排斥的。

  • 在稳定值的n毫秒后发送请求
  • 更改期间每n毫秒发送一次请求
  • 在值更改为n后发送请求

对于名义上的情况,对大多数用户来说,100 to感觉是即时的。然而,如果你的光控制器需要250毫秒的响应,这确实是你的限制因素。这一时间框架不算太糟糕,而且仍然让人有反应。

你所面临的问题实际上是滑块普遍存在的问题。因为它们会导致大量事件被发送,所以你的UI可能会陷入听它们的状态--特别是如果屏幕上还有其他的更新。

既然你控制着一个照明系统,我会做一些测量:

  • 照明系统的反应有多快?(发生可见变化的时间)
  • 什么是变化的门槛,实际上是显而易见的?(在我注意到光强的变化之前,增加了多少)

考虑到这些信息,你可以想出一个足够的计划,这样照明系统就会有响应的感觉,但是你不会用请求轰炸你的设备,因为它的响应速度超过了它的速度。

我之所以说这取决于您打算如何提供反馈,是因为不同的解决方案对您的软件的感知有一定的影响:

  • 未更改的n毫秒之后:在用户停止玩滑块之前没有可见的反馈。
  • 时间速率限制(变化期间每n毫秒一次):系统能够处理的速率是连续的反馈。
  • 价值比率限制(在n值变化之后):反馈的速率实际上是显而易见的。

如果将这三个选项结合在一起,它的工作方式如下:

  • 当滑块被控制时:
    • 我们在"n“毫秒之前不发送任何更新。
    • 只有在上次请求与现在请求之间存在"x“增量的情况下,我们才发送请求。

  • 当滑块稳定时:
    • 我们在"n“毫秒的rest之后发送最后一次更新

同样重要的是,现在要知道不同的选项会影响到您的用户以及他们期望的是什么。

票数 8
EN

Software Engineering用户

发布于 2017-09-07 17:11:34

你想到的这个词是“脱欧”。也就是说,只在一个时间框架内执行一次操作,或者在某个不活动的时间之后执行一次操作,其中该操作被多次请求。

在Javascript中,在没有活动的情况下执行操作如下:

代码语言:javascript
运行
复制
var timer = null;
var action = () =>
{
    clearTimeout(timer);
    timer = setTimeout(() =>
    {
        // Do http request with current value
    }, 500);
};

action();
setTimeout(action, 300);
setTimeout(action, 600);

所以你会看到一个http请求。在滑块的例子中,用户可以拖一段时间,直到暂停500 ms才能看到更新。如果您转而启动超时,如下所示:

代码语言:javascript
运行
复制
var timer = null;
var action = () =>
{
    if (timer == null)
    {
        timer = setTimeout(() =>
        {
            // Do http request with current value
            timer = null;
        }, 500);
    }
};

action();
setTimeout(action, 300);
setTimeout(action, 600);

您将看到两个http请求,因为假设用户拖了一点,超时等待500 ms才能启动http请求。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/356995

复制
相关文章

相似问题

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