ВМ: setTimeout не работает в браузере vm.runInNewContext - PullRequest
0 голосов
/ 19 апреля 2019

Я выполняю сценарий JS с помощью модуля vm в браузере, как показано ниже:

vm.runInNewContext(codeToEval, sandboxObject);

setTimeout, setInterval и другие встроенные методы интервалов не работают, даже если я выставляю их в sandboxObject, созданном с использованием vm.createContext({setTimeout})

console.log('start');
setTimeout(()=> {
     console.log('hello timeout');
 }, 2000);

 console.log('end');

выход:

start
end

Следует отметить, что когда я добавляю .bind (this), то время ожидания срабатывает и прерывается в этой строке, говоря, что .bind не является функцией.

console.log('start');
setTimeout(()=> {
     console.log('hello timeout');
 }, 2000).bind(this);

 console.log('end');

выход:

start
hello timeout
// and an error in console saying setTimeout(...).bind is not a function
// and end is not printed

Chrome 70

Платформа Ubuntu 18.04

V8

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...