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