0

鉴于很久以前异步编程在 Javascript 中已经司空见惯,对我来说,对 window.setTimeout 的调用次数似乎非常骇人听闻。我了解 VM 的工作原理以及事件循环的工作原理。关键是,有谁知道为什么 ecma 作者不选择添加某种“nextEventLoop”或“defer”调用来强制稍后执行逻辑块的原因?

每次看到 setTimeout(0) 时我都会畏缩,因为从来没有作者打算将超时设置为零。那么,为什么要继续强迫我们进行这种黑客攻击呢?

或者,有没有更好的选择?

4

1 回答 1

1

从 ES6 开始,Promise.resolve().then(() => { ... })几乎可以满足您的要求,并且对于大多数仍然只是 ES5 的环境都有可用的 Promise polyfill。大多数 polyfill 甚至setTimeout尽可能避免使用更好更快的选项。

于 2017-05-22T18:26:46.540 回答