如何支持Internet Explorer11中的承诺?
我有一个简单的代码,可以在除Internet Explorer 11以外的所有浏览器上完美运行。如何使其在所有浏览器上都能运行?
Codepen
'use strict';
let promise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve("result");
}, 1000);
});
promise
.then(
result => {
alert("Fulfilled: " + result);
},
error => {
alert("Rejected: " + error);
}
);
如果您希望这种类型的代码在IE11中运行(它根本不支持推荐答案的大部分内容),那么您需要获得一个第三方Promise库(如),包括该库,并将您的代码更改为使用ES5编码结构(无箭头函数,无[2-0]等.)因此,您可以在旧浏览器支持的范围内生活。
或者,您可以使用转换程序(如Babel)将ES6代码转换为可以在旧浏览器中运行的ES5代码。
以下是使用Bluebird Promise库使用ES5语法编写的代码版本:
<script src="https://cdnjs.cloudflare.com/ajax/libs/bluebird/3.3.4/bluebird.min.js"></script>
<script>
'use strict';
var promise = new Promise(function(resolve) {
setTimeout(function() {
resolve("result");
}, 1000);
});
promise.then(function(result) {
alert("Fulfilled: " + result);
}, function(error) {
alert("Rejected: " + error);
});
</script>
相关文章