quasar
Version:
Build high-performance VueJS user interfaces (SPA, PWA, SSR, Mobile and Desktop) in record time
34 lines (25 loc) • 596 B
JavaScript
import { onDeactivated, onBeforeUnmount, getCurrentInstance } from 'vue'
import { vmIsDestroyed } from '../../utils/private/vm'
/*
* Usage:
* registerTimeout(fn[, delay])
* removeTimeout()
*/
export default function () {
let timer
const vm = getCurrentInstance()
function removeTimeout () {
clearTimeout(timer)
}
onDeactivated(removeTimeout)
onBeforeUnmount(removeTimeout)
return {
removeTimeout,
registerTimeout (fn, delay) {
clearTimeout(timer)
if (vmIsDestroyed(vm) === false) {
timer = setTimeout(fn, delay)
}
}
}
}