异步构造函数 - 构造函数与Promise的结合

拜浏览器和Node.js的更新所赐, async函数这几年变得越来越常见, 我们在实例化一个类的时候可能也会要先异步执行一些操作. 拿一个最简单的延迟初始化的类作例子, 来自其他语言的编程习惯会使我们下意识这么写: function delay(timeout) { return new Promise(resolve => setTimeout(() => resolve(), timeout)) } class MyClass { constructor() { this.completed = false } async init(timeout) »


异步Proxy - Proxy与Promise的结合

Proxy和Promise是两个已经可以在现代JavaScript运行环境里广泛使用的内置对象. 也许Proxy对你来说还有些陌生, 但Promise相信你已经使用过无数次了, 它是一个可爱的语法糖, 用来替代回调函数来以更优雅的写法串连起异步非阻塞操作. Proxy其实也并不是多么新鲜的事物, 它曾经以Object.observe()的身份现身过一段时间, 它是一个可以用来定制对象行为的同步钩子, 用它我们可以实现一些从前无法实现的奇妙行为, 比如创建出一个拥有无限个属性的对象. 很少有人会想到把Proxy和Promise联系在一起, 它们看起来是如此不同, 一个同步, 一个异步, 一个代理 »


名为JavaScript的魔法

这是一个新的文章系列, 主要讲一些JavaScript的真正使用技巧, 不定期更新. 写这个系列的原因是我受够了我的无知同行们写的一些狗屁玩意, 所以让我们来见识一些真正有意思的东西. 最初期的几篇文章主要是跟我的Chrome扩展Gloria相关的, 我本该在一年前就写Gloria的运行原理的, 但由于种种原因始终没能写成, 所以这个系列也用来提前揭开一些Gloria引擎盖下的东西. »