Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

Promise 技术细节(7)

  ES6 的 Promise.resolve 方法可以快速创建一个 resolved 的 Promise 对象。并且它对 Promise 变种也适用,因为它的定义并不是创建一个 Promise 对象,而是根据调用的 this 来决定创建什么。这么做可以确保 resolve 这个静态方法被 class extends 继承以后也能正常使用。
var MyPromise = class extends Promise {}; MyPromise.resolve(123) instanceof MyPromise; // true   但是规范归规范,现实总是冰冷的。在目前 Chrome 的实现中,如果 resolve 的目标是一个原生 Promise 的实例就会立即被返回,不再做其它处理,这导致了如果需要使用 resolve 来转换 Promise 到 Promise 变种对象将会失败 var MyPromise = class extends Promise {}; var promise = Promise.resolve(123); var myPromise = MyPromise.resolve(promise); console.log(myPromise === promise); // true in Chrome 47 console.log(myPromise instanceof MyPromise); // false in Chrome 47   Firefox 稳定版还没有支持 class,所以无法鉴定。但是 FirefoxNightly 上的执行结果是正确的。
  再次为 Firefox 鼓掌撒花~
网名:
34.203.245.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^