UNPKG

mm_os

Version:

这是超级美眉服务端框架,用于快速构建应用程序。

121 lines (114 loc) 2.2 kB
const { types } = require("util"); /** * 行为器 */ class Ref { /** * 构造函数 * @param {Object} obj 对象 */ constructor(obj) { this.msg = []; this._init(obj); } } /** * 初始化 * @param {Object} config 配置参数 * @returns {Object} 执行结果 */ Ref.prototype._init = function(obj) { Object.assign(this, obj); this.data = this.data || {}; this.methods = this.methods || {}; return this; } /** * 运行当前类函数 * @param {String} name 函数名 * @param {Object} args 参数集合 * @returns {Object} 执行结果 */ Ref.prototype.run = async function(name, ...args) { var ret; var key = name + "_before"; if (this[key]) { ret = this[key](...args); if (types.isPromise(ret)) { ret = await ret } } key = name + "_check"; if (this[key]) { ret = this[key](...args); if (types.isPromise(ret)) { ret = await ret } if (ret) { return ret; } } if (this[name]) { ret = this[name](...args); if (types.isPromise(ret)) { ret = await ret } if (ret) { key = name + "_after"; if (this[key]) { ret = this[key](...args); if (types.isPromise(ret)) { ret = await ret } } } } return ret; } /** * 执行子脚本函数 * @param {String} name 名称 * @param {String} func_name 执行方法 * @param {Object} args 参数集合 * @returns {Object} 返回执行结果 */ Ref.prototype.exec = async function(name, func_name, ...args) { var cs = this.dict[name]; var ret; var key = func_name + "_before"; if (cs[key]) { ret = cs[key](...args); if (types.isPromise(ret)) { ret = await ret } } key = func_name + "_check"; if (cs[key]) { ret = cs[key](...args); if (types.isPromise(ret)) { ret = await ret } if (ret) { return ret; } } if (cs[func_name]) { ret = cs[func_name](...args); if (types.isPromise(ret)) { ret = await ret } if (ret) { key = func_name + "_after"; if (cs[key]) { ret = cs[key](...args); if (types.isPromise(ret)) { ret = await ret } } } } return ret; } module.exports = Ref;