load-script
load-script copied to clipboard
Return a promise (feature request)
It would be convenient.
For anyone else looking for a workaround to get this functionality, this should do the trick.
Plain JS
const load = require('load-script');
const loadScript = async (src, options) => new Promise((resolve, reject) => load(src, options, (err, script) => {
if (err) {
reject(err);
} else {
resolve(script);
}
}));
TypeScript
const load = require('load-script');
const loadScript = async (src: string, options: object = {}) => new Promise((resolve, reject) => load(src, options, (err: string | null, script: HTMLScriptElement) => {
if (err) {
reject(err);
} else {
resolve(script);
}
}));
I'm doing this to load the Google API client (typescript):
import loadScript from 'load-script';
let loadApiPromise: Promise<typeof window.gapi> | null = null;
const loadApi = (): Promise<typeof window.gapi> => {
if (loadApiPromise) return loadApiPromise;
loadApiPromise = new Promise((resolve, reject) => {
loadScript(GAPI_SCRIPT_URL, (error, script) => {
if (error) reject(error);
resolve(window.gapi);
});
});
return loadApiPromise;
};