我正在尝试在 IE9 + 上实施原生承诺,而且似乎Internet Explorer无法识别“Promise”类/对象。 我在http://caniuse.com/#search=Promise中搜索并看到 IE 没有Promise对象。 但这很奇怪,因为 jQuery 和 Angular 适用于承诺,而适用于IE9 +。 也许他们正在实施他们自己的承诺? ** 我可以实现自己的承诺吗?**
答案 0 :(得分:25)
本机意味着它是写在浏览器的代码基础内而不是用户级代码中。为了在IE9中本地实现promise,你必须从Microsoft获得IE9源代码的副本,编写并编译和分发它们。虽然这是可行的,但这不是一个非常可行的选择。
另一方面 - userlevel 中存在多个promise库。完全可以实现自己的承诺实现 - here is a great blog post on how。
您可以自由地添加一个类似bluebird(bluebird)或Q的库来实现此API,并且将来会继续与ES6承诺一起使用。值得一提的是Bluebird例如在IE6 +上运行,所以在你的情况下应该没有问题。
例如here is Angular's implementation,这里是jQuery's implementation - 我认为Angular的可读性更高。
另请注意,与上面留下的内容相反,承诺是标准化的Promises / A +规范,像Angular这样的库符合jQuery和jQuery这样的库正在努力符合并可能在下一个版本中。原生承诺也符合标准并超集它。
答案 1 :(得分:4)
这是一个promise implementation我用打字稿写了自己,并经过测试,从IE8向上完全工作。是。它完全是Promises / A + conformant(和tested)。
因为它是用打字稿写的,所以计划也是在接下来的日子里为tsd定义。