如何防止长时间运行的脚本执行时IE冻结?



我在执行长时间运行任务时遇到了 Internet Explorer 长时间的冻结。该任务是关于使用pdfmake和纯/原版javascript生成大型PDF文档。所以,这意味着我无法控制这个脚本的作用,我只是称之为

function getPdf(docDefinition, filename) {
var t = Date.now();
return pdfMake.createPdf(docDefinition).download(fileName + '.pdf', function() {
console.log('pdfMake.createPdf: '' + fileName + '.pdf' generated in: ' + (Date.now() - t) + 'ms');
});
}

对于一些大型文档,它需要 30 多秒,而我什么也做不了。

如何防止冻结,以便我可以显示一些旋转的等待图标或其他内容?

从版本10开始,IE支持Web-worker,允许在与主线程不同的线程上运行JS。

您可以使用异步函数返回一个承诺,这将在pdf生成器完成他的工作时解决。

ES5

您可以使用此承诺填充

最新更新