UNPKG

@codelet/core

Version:
34 lines (33 loc) 1.06 kB
import { formatMessage } from '@daysnap/utils'; // 默认配置 const defaultOptions = { formatMessage, excludeMessage: (message) => !message, }; export function createWithError(options) { const { formatMessage, excludeMessage } = Object.assign(defaultOptions, options); return (fn) => { return async (...params) => { let ctx = null; if (params.length > fn.length) { ctx = params[params.length - 1]; // 为了支持 withLoading if (ctx.setData) { params.pop(); } } try { ctx?.setData?.({ error: '' }); return await fn(...params); // eslint-disable-next-line no-useless-catch } catch (error) { const message = formatMessage(error); if (!excludeMessage(message)) { ctx?.setData?.({ error: message }); } throw error; } }; }; }