运行 javascript 函数并在 5 秒或满足条件后停止
Run javascript function and stop either after 5 seconds or condition is met?
我需要编写一个纯JavaScript函数,该函数将仅执行5秒,并在以下任一条件(以先到者为准)时停止
- 5 秒已过去
- 用户输入的字段
我只能做条件 2,但无法弄清楚如何在 5 秒后中断循环:
function beginScanningForItemVer2(){
var userInput= false;
var element;
while (!userInput){
element = document.getElementById("input").value;
if (element != null){
userInput= true;
}
}
}
编辑:
谢谢大家帮助我。请继续帮助我...似乎我无法使用 while 循环来检测用户输入,因为我的 CPU 使用率在循环中上升得非常快。有没有办法同时完成这两个目标?请帮助我
Javascript 往往非常面向回调,因为默认情况下,页面上的所有 Javascript 都在单个线程中运行,这意味着当其他代码忙于运行时,UI 没有响应。因此,与其在函数中循环并在每个循环中查找输入,不如注册一个回调函数,该函数将在输入元素发生更改时调用 - 例如,每当元素的值更改时,onchange
侦听器将运行您的回调。您可以在 5 秒后取消注册此回调,以阻止在用户在 5 秒后输入内容时发生任何事情。
稀疏示例(参考 http://www.w3schools.com/jsref/event_onchange.asp):
// Set a function to be called when the value of the input element changes.
object.onchange = function() {
valueAfterChange = document.getElementById("input").value;
// Do something with valueAfterChange.
}
// window.setInterval calls a function after a set delay.
window.setInterval(function() {
object.onchange = null;
// Anything else you might want to do after 5 seconds.
}, 5000); // Call this function after 5000 milliseconds == 5 seconds.
如果这仍然是一个活动问题,也许你可以试试这个:
const endTime = Date.now() + 5000; // set your cutoff
const scanning = setInterval(() => {
const element = document.getElementById('input').value;
if (element) {
clearInterval(scanning);
}
if (endTime < Date.now()) {
clearInterval(scanning);
}
}, 1000 /* interval in ms */)
设置间隔以每秒扫描一次(或按所需频率扫描),然后可以设置条件,以便在间隔超过 5 秒标记时停止间隔。
Eddited
您可以将setInterval
和setTimeout
结合起来来解决.您的代码将如下所示。
var interval = setInterval(function() {
var userInput= false;
var element;
while (!userInput){
element = document.getElementById("input").value;
if (element != null){
userInput= true;
}
}
}, 1000);
setTimeout(function() {
clearInterval(interval);
}, 5000)
您可以在此处查看更多信息。干杯。
https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers
相关文章:
- 当满足PHP条件时显示一个弹出窗口
- 如果满足某些条件,我如何才能创建一个只有值的对象
- 从json数组中查找满足条件的特定元素的值
- 如果满足某些条件,如何在不调用模态的情况下首先调用类
- 多次调用promise函数,直到另一个promise函数满足条件
- 在经过一段时间或满足条件后运行代码
- 在谷歌应用程序脚本中,如何在满足条件的情况下只发送一次电子邮件
- Ember.js:如果控制器中满足某些条件,则在路由器中重定向
- 禁用超链接,直到 JSP 中满足条件
- Javascript/C# - 满足语句条件时的确认对话框
- 如何在重复满足条件时调用一次辅助函数
- 如何生成一个条件提示,该提示将继续提示,直到满足条件为止
- 只有在条件满足时才加载javascript脚本-不起作用
- 风扇箱在关闭前允许在条件满足时关闭
- 而循环即使在条件满足后也不会停止
- 如果条件满足,在Angular中显示图像
- 条件满足时的Javascript重定向
- If语句条件满足,但内容未执行
- 一旦条件满足,异步调用函数
- 触发event.preventDefault ();仅当条件满足时- Jquery / javascript