当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Node.js vm.Script.runInContext(contextifiedObject[, options])用法及代码示例


script.runInContext(contextifiedObject[, options])

历史
版本变化
v6.3.0

现在支持breakOnSigint 选项。

v0.3.1

添加于:v0.3.1


参数
  • contextifiedObject <Object> vm.createContext() 方法返回的 contextified 对象。
  • options <Object>
    • displayErrors <boolean>true 时,如果在编译 code 时发生 Error ,则导致错误的代码行附加到堆栈跟踪。 默认: true
    • timeout <integer> 指定在终止执行之前执行 code 的毫秒数。如果执行终止,将抛出 Error 。该值必须是严格的正整数。
    • breakOnSigint <boolean>如果true, 接收SIGINT(Ctrl+C) 将终止执行并抛出一个Error.已通过以下方式附加的事件的现有处理程序process.on('SIGINT')在脚本执行期间被禁用,但之后继续工作。默认: false.
  • 返回: <any> 脚本中执行的最后一条语句的结果。

运行给定 contextifiedObjectvm.Script 对象包含的编译代码并返回结果。运行代码无权访问本地范围。

下面的示例编译代码,增加一个全局变量,设置另一个全局变量的值,然后多次执行代码。全局变量包含在context 对象中。

const vm = require('node:vm');

const context = {
  animal: 'cat',
  count: 2
};

const script = new vm.Script('count += 1; name = "kitty";');

vm.createContext(context);
for (let i = 0; i < 10; ++i) {
  script.runInContext(context);
}

console.log(context);
// Prints: { animal: 'cat', count: 12, name: 'kitty' }

使用 timeoutbreakOnSigint 选项将导致新的事件循环和相应的线程被启动,这具有非零的性能开销。

相关用法


注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 vm.Script.runInContext(contextifiedObject[, options])。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。