You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
17 lines
496 B
17 lines
496 B
import { isPromise } from './is-promise.js'; |
|
export function maybeAsyncResult(getResult, resultHandler, errorHandler = (err) => { |
|
throw err; |
|
}) { |
|
try { |
|
const result = isFunction(getResult) ? getResult() : getResult; |
|
return isPromise(result) |
|
? result.then((result) => resultHandler(result)) |
|
: resultHandler(result); |
|
} |
|
catch (err) { |
|
return errorHandler(err); |
|
} |
|
} |
|
function isFunction(arg) { |
|
return typeof arg === 'function'; |
|
}
|
|
|