检测低处理速度

时间:2017-06-29 23:09:18

标签: javascript mobile

我有一个网络应用程序,它本质上是一个用户可以输入的文本框。

用户在框中键入内容,然后单击“提交”按钮,并执行脚本以显示图像。

使用AngularJS我也可以在用户输入框中时调用相同的JS函数,无需单击按钮并提供更流畅的体验。

但是,这意味着这个相当冗长且密集的功能可以每秒多次调用,特别是对于快速打字机。在桌面上,这没问题。在移动设备上 - 至少是入门级移动设备 - 它非常慢,而且是一种可怕的体验。

自动提交行为由默认为TRUE的布尔变量控制。

在移动设备上,我想将此变量设置为FALSE。更好的只是将它设置为假的慢速设备,但我认为没有可能检测到。最简单的方法是什么?

2 个答案:

答案 0 :(得分:1)

您可以使用debounce功能仅在X时间之后运行该功能以停止输入。在this文章中,您可以找到如何实现它

function debounce(func, wait, immediate) {
    var timeout;
    return function() {
        var context = this, args = arguments;
        var later = function() {
            timeout = null;
            if (!immediate) func.apply(context, args);
        };
        var callNow = immediate && !timeout;
        clearTimeout(timeout);
        timeout = setTimeout(later, wait);
        if (callNow) func.apply(context, args);
    };
};

但如果您仍想检测它是否是移动设备,则可以使用此小功能

function isMobile() {
    return /Mobi/.test(navigator.userAgent) || /Android/.test(navigator.userAgent);
}

答案 1 :(得分:0)

其中一些答案可能对您有所帮助:

https://stackoverflow.com/search?q=determine+mobile

(但为了好玩......) Welll ......首先是不可思议的方式..你可以在加载页面时做一个性能计时器。

  1. 显示一个忙碌的指示灯..
  2. 创建一个计数器x ++ 1秒..
  3. 如果x> 10000 ..快速设备(总数超出我的屁股数量)
  4. 如果x< 10000 ..慢速设备
  5. 删除忙碌指示符并继续
  6. 就像我说的那样......人们会争辩说a)你在浪费时间和b)你在浪费电池。 如果以后真的能改善用户体验,就不会提出这个论点。

    还有许多人用来确定浏览器“类型”及其提供的功能的库。