當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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])。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。