setTimeout w osobnym wątku.

0

Witaj, mam taki przykładowy kod:

    tab=new Array();
    for (var i=1; i<=(100000); i++)
    {
      tab[i]=Math.floor(Math.random() * 10) + 1;
    }


    function odliczaj()
    {
      setTimeout(function(){odliczaj()},1000);

      sekundy++;
      $('#sekundy').html(sekundy);


      for (var i=1; i<=(100000); i++)
      {
        tab[i]=tab[i]*1.03;
      }
    }

    odliczaj();

Przez to, że funkcja odliczaj wykonuje działanie matematyczne, jest wstrzymywana na czas liczenia i w rezultacie w 60 cykli powtórzeń skryptu mija więcej czasu niż 60 sekund. W jaki sposób rozwiązać tą kwestię. Czy da się nadać tej funkcji osobny wątek? żeby mimo obciążenia przez wykonywanie obliczeń, mijało równo 60 sekund?

0

ze względu na to, że JS jest jednostkowy - nie, nie jest to możliwe żeby ustawić timeout na dokładnie X czasu. Ze względu na mechanizm kolejki i event loopa, czas który podajesz w timeoucie to jest minimalny czas - funkcja podana w timeoucie będzie przerzucona do kolejki. Jaki masz use case? Może to jest możliwość uwarunkowania timeoutu od czasu pobranego za pomocą np new Date().time() (dokladnie nie pamietam nazwy funkcji służącej do pobrania czasu w milisekundach) i wykorzystaniu różnicy między wykonaniami.

0

dzięki za odpowiedź. Szkoda więc, że nie istnieje timeout z maksymalnym czasem :<

1 użytkowników online, w tym zalogowanych: 0, gości: 1