méthode de veille nodejs

PHPz
Libérer: 2023-05-25 16:25:07
original
3137 Les gens l'ont consulté

Node.js est un environnement d'exécution JavaScript asynchrone côté serveur piloté par les événements. Il est léger, économe en énergie et évolutif. Cependant, en raison du modèle d'exécution asynchrone de Node.js, il existe certains cas où des opérations d'attente/retard similaires aux opérations synchrones doivent être implémentées manuellement. Les opérations de veille sont souvent utilisées pour simuler des opérations de longue durée ou dans certaines tâches qui doivent être exécutées après un certain temps. Cet article explique comment implémenter les opérations de veille dans Node.js.

Méthode 1 : Utilisez la fonction setTimeout

La méthode setTimeout est une fonction intégrée de Node.js, qui peut être utilisée pour déclencher une fonction de rappel après un nombre spécifié de millisecondes. Nous pouvons utiliser cette fonctionnalité pour simuler des opérations de veille.

Voici un exemple :

function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}

async function main() {
    console.log('start');
    await sleep(2000); // 睡眠2秒
    console.log('end');
}

main();
Copier après la connexion

Dans le code ci-dessus, nous définissons une fonction asynchrone sleep, qui renverra un objet Promise et appellera la méthode de résolution après un nombre spécifié de millisecondes. La fonction main appelle la fonction sleep et attend 2 secondes avant de générer une ligne de journal. Grâce à la syntaxe async/wait, nous pouvons implémenter des opérations de veille très facilement.

Méthode 2 : Utiliser un objet Promise personnalisé

Nous pouvons également implémenter nous-mêmes un objet Promise pour implémenter des opérations de veille. Cette méthode est plus flexible et vous pouvez personnaliser la méthode d'exécution des objets Promise en fonction de vos propres besoins.

Voici un exemple :

function sleep(ms) {
    return new Promise(resolve => {
        let startTime = new Date().getTime();
        while (new Date().getTime() < startTime + ms);
        resolve();
    });
}

async function main() {
    console.log('start');
    await sleep(2000); // 睡眠2秒
    console.log('end');
}

main();
Copier après la connexion

Dans cet exemple, nous définissons une fonction sleep qui exécutera une boucle pendant un nombre spécifié de millisecondes (pour le timing de simulation). Lorsque la boucle se termine, nous appelons la méthode solve pour terminer l'exécution de la promesse. La fonction main appelle la fonction sleep et attend 2 secondes avant de générer une ligne de journal.

Il convient de noter que cette méthode occupera également des ressources CPU lors de la mise en œuvre des opérations de veille. Il n'est pas recommandé de l'utiliser dans un environnement de production et n'est utilisée que dans des circonstances particulières lorsque des opérations de longue durée doivent être simulées.

Conclusion

Quelle que soit la méthode que vous utilisez, la mise en œuvre des opérations de sommeil est simple. Bien que le modèle d'exécution asynchrone de Node.js soit efficace pour gérer les requêtes à forte concurrence, nous disposons également de diverses méthodes pour implémenter certaines opérations nécessitant une attente/un délai. Il est nécessaire de choisir la méthode de mise en œuvre appropriée en fonction des besoins réels.

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!

source:php.cn
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!