recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - setIntervalle

Le temps d'exécution de ce code sur un navigateur Windows est très différent de celui d'exécution de ce code sur un Mac.
Cette méthode effectue une sortie toutes les 1 ms. Pourquoi y a-t-il des différences entre Windows et Mac ? C'est évidemment plus lent sur Mac.

var time =0;
var interval = setInterval(function(){
    time++;
    console.log("time="+time);
    if(time===100){
        clearInterval(interval);
    }
},1);
阿神阿神2766 Il y a quelques jours722

répondre à tous(2)je répondrai

  • 女神的闺蜜爱上我

    女神的闺蜜爱上我2017-06-12 09:26:04

    Oui, souvent, settimeout et setinterval ne sont pas particulièrement précis. La raison en est que js est à thread unique

    .

    La fonction de rappel de setInterval n'est pas exécutée immédiatement après le délai d'attente, mais sera exécutée une fois que les ressources informatiques du système seront inactives

    Le prochain temps de déclenchement ne démarrera pas tant que la fonction de rappel setInterval n'est pas exécutée

    Donc, si le calcul effectué dans setInterval prend trop de temps

    Ou si d'autres tâches fastidieuses sont en cours d'exécution, le timing de setInterval deviendra de plus en plus imprécis et le retard sera important.

    répondre
    0
  • 欧阳克

    欧阳克2017-06-12 09:26:04

    Laissez-moi vous donner un exemple simple :

    <script type="text/javascript">
            setTimeout(function(){
                console.log('a');
            } , 0);
            console.log('b');
    </script>

    Devinez qui l'exécutera en premier ? Même si nous disons js是单线程的,但是浏览器是可以控制多线程的,当我们设置setTimeOut的时候,其实浏览器会调用一个线程,而这个线程就叫做Event Loop,让这个线程帮我们去执行,而主线程则继续执行下面的代码,这也就是我们经常会说到的异步模式.

    répondre
    0
  • Annulerrépondre