Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 承诺不会在IE11上工作_Javascript_Typescript_Promise_Bluebird_Es6 Promise - Fatal编程技术网

Javascript 承诺不会在IE11上工作

Javascript 承诺不会在IE11上工作,javascript,typescript,promise,bluebird,es6-promise,Javascript,Typescript,Promise,Bluebird,Es6 Promise,我对javascript的承诺还不熟悉,所以我希望有人能帮我解决这个问题 问题:承诺不会在IE11上执行,在Chrome和FireFox上运行良好 使用的框架:我尝试使用es6-promise.d.ts和bluebird.d.ts,结果相同 代码: 静态executeSomething():承诺 { log(“内部执行方法”); var测试=新承诺((解决、拒绝)=> { 控制台日志(“内部承诺”); }).catch(函数(错误){console.log(“错误”)}); 控制台日志(“承诺后

我对javascript的承诺还不熟悉,所以我希望有人能帮我解决这个问题

问题:承诺不会在IE11上执行,在Chrome和FireFox上运行良好

使用的框架:我尝试使用es6-promise.d.ts和bluebird.d.ts,结果相同

代码:

静态executeSomething():承诺
{
log(“内部执行方法”);
var测试=新承诺((解决、拒绝)=>
{
控制台日志(“内部承诺”);
}).catch(函数(错误){console.log(“错误”)});
控制台日志(“承诺后”);
回归试验;
}
结果:在chrome和Firefox上,我可以看到所有日志,但在IE11上,我只看到“内部执行方法”,这意味着问题在于创建承诺时


我认为这是因为IE11不支持es6,但我使用bluebird也得到了同样的结果,我希望一些人能为我的问题带来一些启示。

你需要在你的页面中包含一个promise polyfill,IE11才能工作

您使用es promise的本能是正确的,但是您还需要在html中包含
.js
文件

<script src="path/to/es6-promise.js"></script>

.d.ts
文件将为TypeScript编译器提供它的定义,但不影响运行时。您仍然需要在html中包含polyfill,以便它在浏览器中实际运行

在使用TypeScript或任何编译语言时,要记住的最大一点是编译时和运行时之间的差异

.d.ts
.ts
.tsx
等都是编译时间文件。这意味着这些不是实际执行的文件,而是生成运行时代码的文件

.js
文件是运行时文件。这些是由浏览器运行的文件


.d.ts
文件不包含代码,而是包含代码签名的定义,因此应始终附带将在浏览器中运行的相应
.js
文件。

IE11不支持es6。es6承诺是一个可怕的承诺,它的价值。谢谢!!!这只发生在IE上,不知道为什么,但添加引用解决了我的问题。@BenjaminGruenbaum,你对更好的polyfill有什么建议吗?我听说lie.js很好,但我主要还是支持bluebird。即使核心js polyfill也不错。
<script src="path/to/es6-promise.js"></script>