有没有办法在ie9 +中实现承诺

我试图在IE9 +上实现本机承诺 ,似乎Internet Explorer不识别“Promise”类/对象。 我在http://caniuse.com/#search=Promise中搜索并看到IE没有Promise对象。 但这很奇怪,因为jQueryAngular可以使用promise并在IE9 +中工作。 也许他们正在实施自己的承诺? **我可以实现自己的承诺吗?**

什么是“原生的”

本机意味着它是在浏览器的代码库中编写的,而不是在用户级代码中编写的。 为了在IE9中本机实现promise,你必须从Microsoft获得IE9源代码的副本,编写并编译和分发它们。 虽然这是可行的,但这不是一个非常可行的选择。

今天使用承诺

另一方面 – 在userlevel中存在几个promise库。 完全可以实现自己的承诺实现 – 这是一篇关于如何实现的博客文章 。

您可以自由地包含像bluebird ( bluebird )或Q这样的库来实现此API,并且将来会继续与ES6承诺一起使用。 值得一提的是Bluebird例如在IE6 +上运行,所以在你的情况下应该没有问题。

例如, 这里是Angular的实现 ,这里是jQuery的实现 – 在我看来,Angular的可读性更高。

标准

另请注意,与上面留下的内容相反,Promises / A +规范标准化了与Angular一致的库,jQuery等库正在努力符合并可能在下一版本中。 原生承诺也符合标准并超集它。

这是我自己用打字稿写的一个承诺实现 ,并经过测试,从IE8向上完全工作。 是。 它完全是Promises / A +一致(并经过测试 )。

因为它是用打字稿写的,所以计划也是在接下来的日子里为tsd定义的。