在 javascript 中,for() 循环相对于其他操作来说非常紧凑和高效。在每个排列上按顺序执行此操作(即摆脱 for() 循环)将是不雅的,也不会为您节省很多周期。
如果某项操作可能导致客户端停止运行,则需要将问题拆分为更小的组件,并警告用户执行该操作需要一些时间。
我建议将此操作拆分为更小的块,而不是尝试找到另一个不使用 for() 的算法。
也许像这样,使用回调可以防止代码阻塞:
var split = service.length/4;
function alpha(split, position, callback) {
for (var i = split*(position-1); i < split*(position); i++) {
dv.setUint8(i + 4, service.charCodeAt(i));}
if(callback && (typeof(callback) == 'function') {
callback();}
}
var split = service.length/4;
alpha(split, 1, function() {
// poll here for other information or to confirm user wishes to proceed
alpha(split, 2, function() {
// poll here for other information or to confirm user wishes to proceed
alpha(split, 3, function() {
// poll here for other information or to confirm user wishes to proceed
alpha(split, 4);}
}
}
这是一种大大简化的方法,但并不是实现此解决方案的最佳方法。但它会让您有机会优化正在进行的处理并优先考虑与其他操作相关的操作。