Сообщение от Aetae
|
По старинке: дробить вычисления setTimeout'ами.
|
Вот именно! Очень хотелось бы без всяких премудростей setTimeout'ами добиться того, чтобы браузер не зависал.
Но куда вставлять этот setTimeout, если функция, вызывающая зависание браузера, рекурсивная?
function recfrugal(k)
{
var i;
var j;
var t;
var q;
if (k == 82)
{
u++;
for (i = 1; i <= 81; i++) z[i][u] = s[i]
}
if ((k <= 81) && (u < 10))
{
if ((w[k] == 0) || (w[k] == 1)) recfrugal(k+1);
if (w[k] > 1)
{
for (t = 1; t <= w[k]; t++)
{
q = true;
for (j = 1; j <= 20; j++) if (b[k][t] == s[m[k][j]]) q = false;
if (q == true)
{
s[k] = b[k][t];
c++;
recfrugal(k+1);
}
}
s[k] = 0;
c++;
}
}
}
Если заменить рекурсивный вызов recfrugal(k+1); вот так:
setTimeout(function() { recfrugal(k+1) }, 1000);
то ничего не получается, так как она просто будет через него перескакивать, корректного результата не получится.