我已经安装了V8独立版并执行这样的javascript代码:./d8 source.js
。当我使用setTimeout时,我收到ReferenceError: setTimeout is not defined
。这是怎么回事?有可能以某种方式包含这个功能吗?
答案 0 :(得分:10)
setTimeout
不是ECMA-262的一部分,它是由浏览器实现的。但是,如果您安装Node.js(即V8 +附加组件),您将获得命令行setTimeout
。
答案 1 :(得分:1)
就其价值而言,V8在提供的外壳中现已拥有自己的setTimeout
(约7.5年后)。但是它只需要一个参数(要调用的函数),并计划在当前作业完成后立即调用它,就好像您将0
作为第二个参数传递给了更熟悉的{{1 }}由浏览器和Node.js提供。
给定setTiemout
:
example.js
然后
$ v8 example.js
输出
a b c
...在console.log("a");
setTimeout(() => {
console.log("c");
}, 5000);
console.log("b");
和b
之间没有明显的延迟。
(该示例使用了jsvu安装的c
命令,这至少是您直接在V8中运行代码的一种方式。我认为v8
被包含了……)>