hugh 的个人博客

Everyday is a new day

在浏览器端利用Function进行规则测试 - 前端监控

规则报警是监控系统最常用的功能之一, 如何简单正确的设定规则尤为重要, 那么如何在规则运行前就知道规则设置的正确与否呢?那就需要我们对规则进行一些必要的测试

Function

Function 构造函数创建一个新的 Function 对象。直接调用此构造函数可用动态创建函数,但会遭遇来自 eval 的安全问题和相对较小的性能问题。然而,与 eval 不同的是,Function 构造函数只在全局作用域中运行。

new Function ([arg1[, arg2[, ...argN]],] functionBody)

可以包含若干参数, 最后一个入参为function主体代码

我们可以利用Function构造函数,在浏览器对规则代码和测试数据进行预运行, 并尽早的发现问题

使用场景


我们包含了code测试数据两块
利用Function构造一个测试函数

let fun = new Function("data", "logger", "utils", "result", this.notifyForm.code)
      try{
              let rst = fun(context.data, context.logger, context.utils,context.result)
              this.logger.info(`执行成功, \n 结果为 ${JSON.stringify(context.result)}`)
      } catch(e){
             this.logger.error("执行错误:" + e.message)
      }

标题:在浏览器端利用Function进行规则测试 - 前端监控
作者:hugh0524
地址:https://blog.uproject.cn/articles/2020/01/09/1578540699309.html