JavaScript变量“;失焦”;
JavaScript variables "out of focus"?
我有一个函数(见下文),可以在屏幕上写一条消息。每当你正在积极查看它运行的页面时,它就会打印出来;然而,如果你在另一个选项卡中观看视频,然后切换回正在编写函数的选项卡,文本就会混乱不堪。例如:"这是一条信息。"通常会像"t isa hismg esseg"一样加扰。
有问题的功能:
参数:
消息:字符串
object:HTML对象
function writeMessage(message,object){
var i = 0;
var interval = setInterval(function(){
if(i < message.length){
object.append(message.substr(i,1));
i++;
}else{
clearInterval(interval);
}
}, 25);
}
你知道为什么会发生这种事吗?
我还没有测试过,但如果注释所说的是真的,您应该能够通过手动链接单个延迟操作来避免这种情况。您应该能够调用一个超时(setTimeout
函数),而不是定义一个间隔,该函数将字母附加到对象,然后递归地调用自己,同时将消息的其余部分传递给递归调用。
在这种情况下,如果设备没有给异步操作处理器时间,那么至少后续操作不会被创建和执行,因为只有第一个(现在正在等待)操作中的代码才能做到这一点。
或者,您可以使用反应扩展生成一个可观察的间隔,在此间隔上,您可以订阅并用消息更新对象。如果你不熟悉反应式编程,这对你来说可能是一个巨大的新话题,但我当然可以推荐它——哪怕只是作为一个脑筋急转弯,看看不同的编程方法。
相关文章:
- 将函数的上下文应用于javascript变量
- 无法导出函数expressjs/requestjs中的变量
- 函数参数中的数据与指定变量之间的任何性能差异
- 将PHP变量传递给jQuery时遇到问题
- 如何通过ajax刷新JSF填充的javascript变量
- 参数变量出现ngTable指令问题
- 通过javascript重定向html传递php变量
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 全局变量和全局对象的属性之间有什么区别吗
- 如何在Bootstrap Modal中为动态点击生成的变量设置jade属性
- 如何让超时在失焦时在 Chrome 中运行
- 检测失焦的击键,聚焦输入并填写(Jquery)
- JavaScript变量“;失焦”;
- 当窗口失焦时,setTimeout会发生什么
- 如何检查表单是否失焦
- GWT 客户端代码中的易失性变量
- 失焦时日期选择器回发
- 在窗口失焦时停止所有javascript
- 在对焦时显示菜单,在失焦或单击菜单以外的位置时隐藏菜单
- jQuery-如何使输入值(“电子邮件”、“密码”)在失焦时重新出现