javascript - 长时间操作崩溃 Office 插件 (JS)

标签 javascript ms-word office-js

我刚刚创建了一个 (JS) Word 加载项,发现长时间的同步操作会使它崩溃。在这些情况下,会显示以下错误 - [ADD-IN ERROR 抱歉,我们必须重新启动,因为此加载项没有响应。]

enter image description here

以下代码在单击按钮时运行。

    function scanText() {

        Word.run(function (context) {
            var body = context.document.body;

            context.load(body, 'text');

            return context.sync().then(function () {
                
                var r = thisOperationCanTakeALongTimeIfDocIsLarge(body.text);

            });
        })
        .catch(errorHandler);
    }

如何防止这种情况发生?我应该使长时间操作异步吗?在这种情况下,这是如何实现的?

最佳答案

我终于找到了解决这个问题的好方法......我使用这样的 WebWorker:

    function scanText() {
        var w;

        if (typeof (w) == "undefined") {
            w = new Worker("./Scripts/myWebWorker.js");
        }
        else
        {
            showNotification("Sorry! No Web Worker support.");
        }

        w.onmessage = function (event) {
            showNotification(event.data);
        };

        Word.run(function (context) {
            var body = context.document.body;

            context.load(body, 'text');

            return context.sync().then(function () {
                w.postMessage(body.text);
            });
        })
        .catch(errorHandler);
    }

还有 myWebWorker.js 文件:

self.importScripts([...some scripts i need...]);

self.addEventListener("message", function (e) {
    var r = thisOperationCanTakeALongTimeIfDocIsLarge(e.data);
    postMessage(r);
}, false);

关于javascript - 长时间操作崩溃 Office 插件 (JS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42438093/

相关文章:

javascript - API Foursquare javascript 不起作用

javascript - 修改 Javascript 中通过引用传递的变量

javascript - Angular.js 自定义指令仅应用于第一个自定义元素

macos - Office.context.ui.messageParent 在 Outlook 2016 for Mac 中是否损坏?

xml - 无法指定 OfficeApp manifest.xml 的要求集

javascript - 使用javascript的可拖动DIV

Java Apache POI 3.7 XWPFTable 单元格颜色更改

excel - 从 Excel 粘贴到 Word 文档

c# - c#读取word文件

excel - Excel 在哪里添加 list 文件安装到 Mac 上?