UNPKG

@turbox3d/reactivity

Version:

Large-scale reactive state management library

24 lines (22 loc) 801 B
import { isPromise } from '@turbox3d/shared'; import { DispatchedAction, Dispatch } from '../interfaces'; export function normalNextReturn(next: Dispatch, dispatchedAction: DispatchedAction, callback?: () => void, errorCallback?: (error: string) => void) { const result = next(dispatchedAction); if (isPromise(result)) { return new Promise<any>((resolve, reject) => { (result as Promise<any>).then((res) => { callback && callback(); resolve(res); }).catch((error: Error) => { errorCallback && errorCallback(error.stack || error.message); reject(error); }); }); } if (result && result instanceof Error) { errorCallback && errorCallback(result.stack || result.message); } else { callback && callback(); } return result; }