| 27 | * @returns {string} 可在页面中执行的 JS 代码字符串 |
| 28 | */ |
| 29 | const jsCodeTemplate = (fn, args) => |
| 30 | `(() => { |
| 31 | const fn = ${String(fn)} |
| 32 | const args = ${JSON.stringify(args)} |
| 33 | const callResult = (result) => { |
| 34 | if (!!result && (typeof result === 'object' || typeof result === 'function') && typeof result.then === 'function') { |
| 35 | return new Promise(resolve => { |
| 36 | result.then(ret => { resolve(callResult(ret)) }).catch( err => { resolve({ error: true, message: err.message }) }) |
| 37 | }) |
| 38 | } |
| 39 | return { data: result } |
| 40 | } |
| 41 | try { |
| 42 | return callResult(fn.apply(null, args)) |
| 43 | } catch (err) { |
| 44 | return { error: true, message: err.message } |
| 45 | } |
| 46 | })()` |
| 47 | |
| 48 | /** |
| 49 | * 内置方法列表 |