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