等到一个耗时的函数完成
Wait until a time-consuming function finishes
在执行我的加载项时,有一个函数可能需要大约 15 秒才能 运行(在最坏的情况下)。我意识到在 Excel Online 中,系统会等待直到函数完成。但是,在ExcelWindows几秒后,系统认为插件没有响应,重新启动插件:
我做了一个耗时函数如下,不是我的初始函数。 ExcelWindows下的测试显示,点击test
按钮后,文本区没有任何打印,数秒后系统重启加载项。
(function() {
"use strict";
Office.initialize = function(reason) {
$(document).ready(function() {
app.initialize();
$('#test').click(test)
});
};
function test() {
document.getElementById("b").value += 'Start\n';
var x = 10000;
var w = 0;
for (var i = 0; i < x; i++) {
document.getElementById("b").value += i + '\n';
for (var j = 0; j < x; j++) {
for (var k = 0; k < x; k++) {
w = w + 1;
w = w - 1;
}
}
}
document.getElementById("b").value += 'End\n';
}
})();
有谁知道如何让系统等待?
这与您在常规网站中需要做的没有什么不同。请参阅此处的优秀文章 (https://www.nczonline.net/blog/2009/01/13/speed-up-your-javascript-part-1/),尤其是关于分块和使用 setTimeout 的部分。
在执行我的加载项时,有一个函数可能需要大约 15 秒才能 运行(在最坏的情况下)。我意识到在 Excel Online 中,系统会等待直到函数完成。但是,在ExcelWindows几秒后,系统认为插件没有响应,重新启动插件:
我做了一个耗时函数如下,不是我的初始函数。 ExcelWindows下的测试显示,点击test
按钮后,文本区没有任何打印,数秒后系统重启加载项。
(function() {
"use strict";
Office.initialize = function(reason) {
$(document).ready(function() {
app.initialize();
$('#test').click(test)
});
};
function test() {
document.getElementById("b").value += 'Start\n';
var x = 10000;
var w = 0;
for (var i = 0; i < x; i++) {
document.getElementById("b").value += i + '\n';
for (var j = 0; j < x; j++) {
for (var k = 0; k < x; k++) {
w = w + 1;
w = w - 1;
}
}
}
document.getElementById("b").value += 'End\n';
}
})();
有谁知道如何让系统等待?
这与您在常规网站中需要做的没有什么不同。请参阅此处的优秀文章 (https://www.nczonline.net/blog/2009/01/13/speed-up-your-javascript-part-1/),尤其是关于分块和使用 setTimeout 的部分。