10

我已经独立安装了 V8 并执行这样的 javascript 代码:./d8 source.js. 当我使用 setTimeout 时,我收到ReferenceError: setTimeout is not defined. 这是应该的吗?是否有可能以某种方式包含此功能?

4

2 回答 2

12

setTimeout不是 ECMA-262 的一部分,它是由浏览器实现的。但是,如果您安装Node.js(即 V8 + extras),您将获得一个命令行setTimeout

于 2012-09-09T10:43:34.480 回答
4

对于它的价值,V8setTimeout现在(大约 7.5 年后)在它提供的 shell 中拥有自己的东西。但是它只需要一个参数(要调用的函数)并安排在当前作业完成后调用它,大致就像您将第二个参数作为第二个参数传递给浏览器和 Node.js 提供0的更熟悉的形式一样。setTiemout

所以给出example.js

console.log("a");
setTimeout(() => {
    console.log("c");
}, 5000);
console.log("b");

然后

$ v8 example.js

输出

一种
b
C

...在b和之间没有明显的延迟c

(该示例使用由jsvuv8安装的命令,这至少是您直接在 V8 中运行代码的一种方式。我认为已被包含...)d8

于 2020-02-22T17:58:44.663 回答