Skip to content

Instantly share code, notes, and snippets.

@daltonmenezes
Created February 9, 2022 00:47
Show Gist options
  • Save daltonmenezes/de5af9ccf32135ccfacbe634f2da2fcb to your computer and use it in GitHub Desktop.
Save daltonmenezes/de5af9ccf32135ccfacbe634f2da2fcb to your computer and use it in GitHub Desktop.
Wait for DOM elements to exist before executing a callback
// target can ben an array of targets like ['#element', '.element']
function waitFor(target, callback, timeout = 1000) {
return new Promise((resolve) => {
const interval = window.setInterval(() => {
let isTargetOnDOM
isTargetOnDOM = Array.isArray(target)
? target.every((element) => document.querySelector(element))
: (isTargetOnDOM = document.querySelector(target))
if (isTargetOnDOM) {
callback()
clearInterval(interval)
return resolve()
}
}, timeout)
})
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment