javascript - 有没有办法通过 setInterval() 函数返回一个布尔值?
问题描述
我正在开发一个视频播放器项目,我正在使用 videojs 以及 videojs-ima 进行广告前贴片广告。
我终于找到了一种方法来判断是否存在广告;但是,我试图返回一个布尔值true
orfalse
以判断何时运行和执行某个代码块。
这是我的代码,它目前不能像预期的那样工作。
if (navigator.userAgent.match(/iPhone/i) ||
navigator.userAgent.match(/iPad/i) ||
navigator.userAgent.match(/Android/i)) {
let checkAd = document.querySelectorAll('.ima-ad-container');
let checkAdLoop = setInterval(() => {
for (let i=0; i < checkAd.length; i++) {
if (checkAd[i].style.display == 'none') {
console.log('Ad is NOT playing.');
return false;
} else {
console.log('Ad is playing.');
return true;
// do nothing
}
}
}, 1000);
player.on('touchend', () => {
if (player.paused() && checkAdLoop() == false) {
player.play();
} else if (player.currentTime > 0 && checkAdLoop() == false) {
player.pause();
}
});
$('.vjs-icon-placeholder').on('touchend', () => {
if (player.paused() && checkAdLoop() == false) {
player.play();
} else if (player.currentTime > 0 && checkAdLoop() == false) {
player.pause();
}
});
}
如果有人可以帮助我理解并可以向我解释为什么这不起作用,我会很高兴。我该如何解决这个问题?
我知道我很接近了。提前致谢!
解决方案
这是一个经典的 XY 问题。
试图解决与整体情况无关的问题。
这是有效的代码以及我如何以不同的方式处理它。
if (navigator.userAgent.match(/iPhone/i) ||
navigator.userAgent.match(/iPad/i) ||
navigator.userAgent.match(/Android/i)) {
let checkAd = $('.ima-ad-container');
player.on('touchend', () => {
if (checkAd.css('display') != 'none') {
console.log('Ad is playing.');
// do nothing
} else if (checkAd.css('display') == 'none') {
console.log('Ad is NOT playing.');
if (player.paused()) {
player.play();
} else {
player.pause();
}
}
});
$('.vjs-icon-placeholder').on('touchend', () => {
if (checkAd.css('display') != 'none') {
console.log('Ad is playing.');
// do nothing
} else if (checkAd.css('display') == 'none') {
console.log('Ad is NOT playing.');
if (player.paused()) {
player.play();
} else {
player.pause();
}
}
});
}
推荐阅读
- sql - 递归 CTE T- SQL 链中的最低值
- amazon-ec2 - AWS EC2 不会导入 OpenSSH ECDSA 密钥
- c# - 用 u003d c# 替换 =
- r - 如何在 R 中总结和分组
- javascript - 使用 Inspect Element 更改 FireFox 中的 javascript 代码
- machine-learning - Dialogflow - 位置操作不正确
- c# - SonarQube 投诉要么删除这个无用的类对象实例化,要么使用它
- python - 使用 awk 进行模式检查
- react-native - React Native 可访问性设置焦点
- node.js - 如何在我的电子应用程序中打包 knex 以使用 sqlite3