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