1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- // worker.js
- self.addEventListener('message', ({ data }) => {
- // console.log(data)
- const { type, functionString, functionName, params } = data
- // 校验函数字符串是否合法,是否含有parse和send函数
- if (type === 'validateFunctionString') {
- try {
- eval(functionString)
- } catch (_err) {
- // throw new Error('请确保语法正确')
- self.postMessage({ isOk: false, message: '请确保语法正确' });
- }
- try {
- if (parse) {
- try {
- if (send) {
- self.postMessage({ isOk: true, data: 'xxx' });
- }
- } catch (_err) {
- // throw new Error('请确保含有【send】函数')
- self.postMessage({ isOk: false, message: '请确保含有【send】函数' });
- }
- }
- } catch (_err) {
- self.postMessage({ isOk: false, message: '请确保含有【parse】函数' });
- // throw new Error('请确保含有【parse】函数')
- }
- return
- }
- // 执行函数
- if (type === 'runFunction') {
- eval(functionString)
- try {
- const func = eval(functionName)
- // 先尝试转换为json,如果失败再当做字符串使用
- try {
- const parseParams = JSON.parse(params)
- const data = func(parseParams)
- self.postMessage({ isOk: true, data });
- } catch (_err) {
- const data = func(params)
- self.postMessage({ isOk: true, data });
- }
- } catch (_err) {
- self.postMessage({ isOk: false, message: _err.message });
- }
- return
- }
- });
|