【发布时间】:2016-03-22 07:15:49
【问题描述】:
我有一个用 ES6 编写的 React 项目。它使用 Babel 编译,运行良好。除了一个只在 IE 中起作用的承诺(很多!),我已经知道 - 不支持承诺。所以我立刻想到添加一个 polyfill 来为 IE 提供 Promise,但后来我就像“等等,你已经在编写 ES6 并且不是编译到 ES5 中了吗?”谁会比 SO 更了解?
那么在我的项目中添加诸如es6-promise之类的polyfill有什么意义吗?如果有,我应该如何在语法上使用它?现在我只有导入,但我可能也应该以某种方式实现它?
import Promise from 'es6-promise';
这也是在 IE 中导致问题的承诺,也许我有一个我自己没有注意到的语法错误! :)
new SingleObjectResource(DJ_CONST.API.setLanguage)
.put(null, {language_code: theLanguage})
.then(
function() {
window.location.reload();
}
);
【问题讨论】:
-
Babel 只将语言特性转换为 ES5。你仍然需要polyfills :) 把它放在你的页面顶部,不用担心
importing 任何东西,只要像原生可用一样编写 ES6 -
es6-promise 是一个缓慢且相当过时的 polyfill afaik。
-
RGraham,我会一有机会就尝试一下,但您似乎已经设法用两句话抓住了我期望的答案。谢谢!
-
为什么不到处使用bluebird?它的faster than the native promises。还有polyfills for IE。而且我不为他们工作:)。
-
SingleObjectResource是您制作的,还是第三方库?您是否在控制台中遇到某种错误?如果没有,请尝试在您的.then()之后添加.catch(function (error) { console.log(error); })。
标签: javascript reactjs promise ecmascript-6