Maison > interface Web > js tutoriel > La promesse est implémentée de manière asynchrone

La promesse est implémentée de manière asynchrone

php中世界最好的语言
Libérer: 2018-04-17 16:03:15
original
1525 Les gens l'ont consulté

Cette fois, je vais vous apporter la Promesse de mettre en œuvre une implémentation asynchrone. Quelles sont les précautions pour la Promesse de mettre en œuvre une implémentation asynchrone, jetons un coup d'œil.

Afin de garantir la lisibilité, cet article adopte une traduction libre plutôt qu'une traduction littérale, et le code source a été largement modifié. De plus, les droits d'auteur de cet article appartiennent à l'auteur original et la traduction est uniquement destinée à l'apprentissage.

Lors de l'écriture de code asynchrone à l'aide de Promise, utilisez le rejet pour gérer les erreurs. Parfois, les développeurs l’ignorent généralement, ce qui entraîne la non-gestion de certaines erreurs. Par exemple :

function main() {
asyncFunc()
.then(···)
.then(() => console.log('Done!'));
}
Copier après la connexion

Étant donné que l'erreur n'est pas capturée à l'aide de la méthode catch, lorsque la fonction asyncFunc() est rejetée, l'erreur générée n'est pas gérée.

Ce blog expliquera comment détecter les erreurs de promesse non gérées dans les navigateurs et Node.js.

Erreur de promesse non gérée dans le navigateur

Certains navigateurs (tels que Chrome) sont capables de détecter les erreurs de promesse non gérées.

rejet non géré

Écoutez l'événement unhandledrejection pour capturer les erreurs de promesse non gérées :

window.addEventListener('unhandledrejection', event => ···);
Copier après la connexion

Cet événement est une instance de PromiseRejectionEvent, qui possède les 2 attributs les plus importants :

promesse : rejeter la promesse

raison : valeur de rejet de la promesse

Exemple de code :

window.addEventListener('unhandledrejection', event =>
{
console.log(event.reason); // 打印"Hello, Fundebug!"
});
function foo()
{
Promise.reject('Hello, Fundebug!');
}
foo();
Copier après la connexion

Le plug-in de surveillance des erreurs JavaScript de Fundebug écoute l'événement de rejet non géré, afin de pouvoir capturer automatiquement les erreurs de promesse non gérées.

rejet traité

Lorsqu'une erreur de promesse n'est pas gérée initialement, mais est traitée ultérieurement, l'événement Rejectionhandled est déclenché :

window.addEventListener('rejectionhandled', event => ···);

Cet événement est une instance de PromiseRejectionEvent.

Exemple de code :

window.addEventListener('unhandledrejection', event =>
{
console.log(event.reason); // 打印"Hello, Fundebug!"
});
 
window.addEventListener('rejectionhandled', event =>
{
console.log('rejection handled'); // 1秒后打印"rejection handled"
});
 
 
function foo()
{
return Promise.reject('Hello, Fundebug!');
}
var r = foo();
 
setTimeout(() =>
{
r.catch(e =>{});
}, 1000);
Copier après la connexion

Erreur de promesse non gérée dans Node.js

Écoutez l'événement unhandledRejection pour capturer les erreurs de promesse non gérées :

process.on('unhandledRejection', (raison, promesse) => ···);

Exemple de code :

process.on('unhandledRejection', reason =>
{
console.log(reason); // 打印"Hello, Fundebug!"
});
 
function foo()
{
Promise.reject('Hello, Fundebug!');
}
 
foo();
Copier après la connexion

Remarque : Node.js v6.6.0+ signalera par défaut les erreurs de promesse non gérées, vous pouvez donc ne pas écouter l'événement de rejet non géré.

Le plug-in de surveillance des erreurs Node.js de Fundebug écoute l'événement unhandledRejection, afin de pouvoir détecter automatiquement les erreurs Promise non gérées.

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture recommandée :



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: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