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

时间:2017-08-02 10:25:42

标签: javascript internet-explorer pdfmake

我在执行长期运行任务时经历了相当长时间的Internet Explorer冻结。任务是使用pdfmake和pure / vanilla 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秒。

如何防止冻结,所以我可以显示一些旋转等待图标或其他东西?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:-1)

您可以使用async function返回promise,这将在pdf生成器完成其工作后解析。

<强> ES5

您可以使用this promise polyfill