javascript - 出现时获取元素
问题描述
我需要在网页上获取一个元素,通常需要一些时间才能出现,因此我在如何等待元素存在?
function getElement(selector, i = 5) {
return new Promise(async (resolve, reject) => {
if (i <= 0) return reject(`${selector} not found`);
const elements = document.querySelectorAll(selector);
if (elements.length) return resolve(elements);
return setTimeout(async () => await getElement(selector, i - 1), 1000);
})
}
// Now call it with your selector
try {
element = await getElement('.woohoo');
} catch (e) {
// catch the e
}
//OR
getElement('.woohoo', 5)
.then(element => {
// do somthing with the elements
})
.catch(e => {
// catch the error
});
我在我的项目中测试过,如果目标元素在开始时它会返回该元素,但如果目标元素从未出现,它将报告' Uncaught(in promise)XX not found '错误,最坏的情况是没有任何返回如果目标元素在尝试 4 到 1 次后出现,无异常,无元素
代码有什么问题?或如何解决?
谢谢。
解决方案
推荐阅读
- c++ - 这段代码使用 set_union 合并两个数组的时间复杂度是多少?
- postgresql - 将日期间隔作为函数参数传递
- python - 如何将 Series 对象写入 .txt 字符串行周围不带引号?
- odoo - 创建要继承的空选择
- python - 如何为有序数字构建树?
- typescript - 刚刚使用 npx 模板创建了新的 reactproject,但项目没有运行
- db2 - DB2:失败:CDIPR2123I:确保数据库 xmeta 为空
- java - 通过google smtp spring发送时出现MailConnectException
- go - Minecraft 服务器 - 当服务器离线时使用 tar 等工具进行备份,文件会损坏吗?
- flutter - Flutter 的自定义 CircularProgressIndicator