UNPKG

shelving

Version:

Toolkit for using data in JavaScript.

29 lines (28 loc) 871 B
import { isAsync } from "./async.js"; import { logError } from "./error.js"; /** Safely call a callback function (possibly with a value). */ export function call(callback, ...values) { try { const result = callback(...values); if (isAsync(result)) result.then(undefined, logError); } catch (thrown) { logError(thrown); } } /** Return a callback function that safely calls a callback function (possibly with a value). */ export function called(dispatcher, ...values) { return () => call(dispatcher, ...values); } /** Safely call a callback method (possibly wth a value). */ export function callMethod(obj, key, ...values) { try { const result = obj[key]?.(...values); if (isAsync(result)) result.then(undefined, logError); } catch (thrown) { logError(thrown); } }