Allow data tile source loader to return a value or a promise

This commit is contained in:
Tim Schaub
2021-11-20 13:49:10 -07:00
parent fcb39c84ce
commit f6f34f82e5
10 changed files with 100 additions and 13 deletions

View File

@@ -58,3 +58,24 @@ export function memoizeOne(fn) {
return lastResult;
};
}
/**
* @template T
* @param {function(): (T | Promise<T>)} getter A function that returns a value or a promise for a value.
* @return {Promise<T>} A promise for the value.
*/
export function toPromise(getter) {
function promiseGetter() {
let value;
try {
value = getter();
} catch (err) {
return Promise.reject(err);
}
if (value instanceof Promise) {
return value;
}
return Promise.resolve(value);
}
return promiseGetter();
}