ECMAScript的浏览器运行时中，如何在不消耗cpu资源的情况下实现同步的sleep()?目前两种思路:

1：实现一个基于v8事件循环的运行时任务调度器，所有代码有感知地运行在此调度器上

2：在编译期将sleep()函数后的语句变成_sleep(time,callback)函数的callback实参。
`Atomics.wait`大概是 ECMA-262 中唯一可以暂停脚本执行的操作。

            // 由于“安全原因”，SharedArrayBuffer 这个名字不一定可用    // 但可以通过 WebAssembly.Memory 获取 SharedArrayBuffer 对象    const memory = new WebAssembly.Memory({ initial: 1, maximum: 1, shared: true });    const buffer = memory.buffer;    const intarray = new Int32Array(buffer); // 获取 Atomics.wait 需要的整数数组    Atomics.wait(intarray, 0, 0, 3000); // 等 3000 毫秒

当然`Atomics.wait`在 UI 线程中不可用，毕竟你也不想网页卡 3 秒吧。