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

Parlons de la méthode sleep() en javascript

coldplay.xixi
Libérer: 2020-06-18 16:14:28
avant
2442 Les gens l'ont consulté

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);
Copier après la connexion

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之后需要去做的事情
})
Copier après la connexion

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());
})();
Copier après la connexion

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)
Copier après la connexion

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!

Étiquettes associées:
source:webhek.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal