Maison  >  Article  >  interface Web  >  Parlons de la méthode sleep() en javascript

Parlons de la méthode sleep() en javascript

coldplay.xixi
coldplay.xixiavant
2020-06-18 16:14:282369parcourir

Parlons de la méthode sleep() en javascript

De nombreux langages de programmation ont sleep(), delay() et d'autres méthodes, ce qui peut rendre notre programme moins impatient d'effectuer l'opération suivante, mais de retarder et d'attendre un période de temps. Dans le développement de logiciels, nous rencontrons souvent des fonctions qui nécessitent de telles fonctions, comme attendre quelques minutes pour vérifier si un événement se produit. Il existe une méthode setTimeout() en JavaScript pour définir une certaine période de temps pour exécuter une tâche, mais la méthode d'écriture est très moche et nécessite une fonction de rappel :

setTimeout(function(){ alert("Hello"); }, 3000);

JavaScript Promise API est une nouvelle API With. Promesse, nous La fonction setTimeout peut être améliorée. Ce qui suit consiste à encapsuler setTimeout() dans une fonction sleep() qui renvoie Promise.

// https://zeit.co/blog/async-and-await
function sleep (time) {
  return new Promise((resolve) => setTimeout(resolve, time));
}

// 用法
sleep(500).then(() => {
    // 这里写sleep之后需要去做的事情
})

Vous constaterez que cette façon d'écrire est très élégante, un peu comme les fonctions de délai et d'attente dans d'autres langages de programmation. L'API Promise nous permet d'éviter de transmettre des fonctions de rappel, et nous utilisons également la fonction flèche dans ES6 dans notre implémentation.

Un problème qui doit être mentionné ici est que cela sleep() "bloque" la poursuite de l'exécution du programme une fois exécuté. Ce n'est pas synchrone. Si nous voulons qu'il soit exécuté de manière synchrone sans gêner l'exécution du code suivant, nous pouvons utiliser le mot-clé async/await .

(async function() {
  console.log('Do some thing, ' + new Date());
  await sleep(3000);
  console.log('Do other things, ' + new Date());
})();

résultat de l'exécution :

Do some thing, Mon Feb 23 2015 21:52:11 GMT+0800 (CST)  
Do other things, Mon Feb 23 2015 21:52:14 GMT+0800 (CST)

Vous constaterez que cette fois, sleep() ne gêne pas l'exécution de la seconde console.

Mais async/await est une syntaxe dans ES7 et est encore au stade expérimental. Alors, que dois-je faire si je souhaite utiliser cette async/await fonctionnalité maintenant ? Vous pouvez essayer traceur, un précompilateur JavaScript de Google, qui peut compiler des versions supérieures de JavaScript dans le code ES5. Il prend en charge expérimentalement async/await (vous devez utiliser –experimental pour le spécifier).

Tutoriel recommandé : "Tutoriel de base Javascript"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer