javascript - 删除一行会导致浏览器冻结
问题描述
从代码中删除这一行后,浏览器会死机,这是怎么回事?
我将如何防止这种情况发生?
代码写错了,甚至可能发生在第一时间?
apiIsReady = true;
已移除
尝试单击图像上的播放按钮,浏览器会冻结。
https://jsfiddle.net/5umd9zfg/49/
apiIsReady = true;
添加
解决方案
如果不apiIsReady
设置为 true,您将创建循环,该循环会在同一数组的每次迭代中向数组添加新值。
function load_all_waitting_inits()
{
for(var opts of waitting_inits) // new values are being added with each iteration, preventing loop to end
{
init(opts); // parse value of waitting_inits array
}
}
function init(opts) {
loadPlayer();
if (apiIsReady) { // always false
addVideo(opts.video, opts.playerVars || {});
}
else
{
waitting_inits.push(opts) // here you are adding values infinitely
}
}
编辑
检查数组是否包含对象。
function init(opts) {
loadPlayer();
if (apiIsReady) {
addVideo(opts.video, opts.playerVars || {});
}
else if(!waitting_inits.includes(opts)) // if array doesn't include opts then push
{
waitting_inits.push(opts)
}
}
推荐阅读
- javascript - 使用 ES6 模块为从 CDN 加载的 JS 导入 TS 类型
- react-native - React-Native :: WebView :: 一些没有明显模式的空白页面
- azure - 如何在 Azure Application Insights Analytics 上独树一帜
- python - 无法检索数据,因为在使用 get_popular 查询 del.icio.us API 时名称或服务未知
- c# - 串行端口数据接收事件处理程序多次触发
- c# - Path.TryJoin 在 .NET Core 中相对于 Path.Combine 的优势是什么?
- c# - 流 - 内容的长度
- drag-and-drop - rails_admin 拖放顶级对象进行排序
- python - 如何根据用户输入多次提出一组问题?
- c# - C# 添加浏览功能和拖放框