Javascript 设置超时和V8

Javascript 设置超时和V8,javascript,v8,Javascript,V8,我安装了V8 standalone并执行如下javascript代码:/d8 source.js。当我使用setTimeout时,我收到参考错误:setTimeout未定义。应该是这样的吗?是否可能以某种方式包含此功能?setTimeout不是ECMA-262的一部分,它由浏览器实现。但是,如果您安装(即V8+extras),您将获得一个命令行setTimeout,这是值得的,V8现在(大约7.5年后)在它提供的shell中有自己的setTimeout。但它只接受一个参数(要调用的函数),并安排

我安装了V8 standalone并执行如下javascript代码:
/d8 source.js
。当我使用setTimeout时,我收到
参考错误:setTimeout未定义
。应该是这样的吗?是否可能以某种方式包含此功能?

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

,这是值得的,V8现在(大约7.5年后)在它提供的shell中有自己的
setTimeout
。但它只接受一个参数(要调用的函数),并安排在当前作业完成后调用它,大致就像您将
0
作为第二个参数传递给浏览器和Node.js提供的更为常见的
setTiemout
形式一样

因此给出了
example.js

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

$v8 example.js 输出

a b c A. B C …在
b
c
之间没有明显的延迟


(该示例使用的是由安装的
v8
命令,这至少是在v8中直接运行代码的一种方式。我认为
d8
包含在内了…

我从未像这样运行过v8,但我的直觉是没有
窗口
对象,通常会从中调用
setTimeout
。@JaredFarrish您的直觉是对的,也是错的-当浏览器是主机环境时,窗口中的所有内容都是打开的,而不仅仅是对浏览器API的调用。 a b c