@mntm/stats
Version:
A package for integrating analytics tools
29 lines (28 loc) • 871 B
JavaScript
import { safeDocument, safeWindow } from './dom.js';
// Internal
export const loadScript = (src) => {
return new Promise((resolve, reject) => {
// Wait execute
const onSuccess = () => safeWindow.setTimeout(resolve, 0);
const onFail = () => safeWindow.setTimeout(reject, 0);
// Dont block event loop
safeWindow.requestAnimationFrame(() => {
safeDocument.body.appendChild(Object.assign(safeDocument.createElement('script'), {
src,
type: 'text/javascript',
async: true,
onload: onSuccess,
onabort: onFail,
onerror: onFail
}));
});
});
};
export const thenable = (ready, fn) => {
return ready.then(() => {
fn();
return true;
}).catch(() => {
return false;
});
};