Maison >interface Web >js tutoriel >Pourquoi choisir « retour en attente de promesse » plutôt que « retour de promesse » en JavaScript ?

Pourquoi choisir « retour en attente de promesse » plutôt que « retour de promesse » en JavaScript ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-18 07:57:02248parcourir

Why Choose `return await promise` over `return promise` in JavaScript?

return wait promise vs. return promise en JavaScript : différences comportementales

Introduction

Quand travaillant avec du code asynchrone en JavaScript, les développeurs utilisent souvent les mécanismes async/wait pour gérer les promesses. Cependant, il existe deux variantes à prendre en compte lors du renvoi d'une promesse dans une fonction asynchrone : return wait promise et return promise. Cet article explore les nuances entre ces approches.

Différences comportementales

Dans la plupart des cas, il n'y a pas de différence notable entre la promesse d'attente de retour et la promesse de retour. Les deux donneront une promesse qui se résout ou se rejette, fournissant le même comportement observable.

Cependant, une distinction devient évidente lors de l'utilisation de blocs try-catch. Prenons cet exemple :

async function rejectionWithReturnAwait() {
  try {
    return await Promise.reject(new Error());
  } catch (e) {
    return 'Saved!';
  }
}

Dans ce cas, return wait garantit que la promesse rejetée est interceptée dans la fonction asynchrone, permettant à la clause catch d'être exécutée et renvoyant une promesse qui se résout en "Enregistré !".

async function rejectionWithReturn() {
  try {
    return Promise.reject(new Error());
  } catch (e) {
    return 'Saved!';
  }
}

En revanche, return promise renvoie directement la promesse rejetée sans l'attendre dans la fonction asynchrone. Cela signifie que le rejet n'est pas capturé par la clause catch et que l'appelant reçoit le rejet à la place.

Implications

Le choix entre la promesse d'attente de retour et la promesse de retour dépend sur le comportement souhaité. Si la gestion des erreurs au sein de la fonction asynchrone est cruciale, la promesse d'attente de retour doit être utilisée pour garantir que les erreurs sont détectées et traitées en conséquence. Sinon, la promesse de retour peut être utilisée pour optimiser les performances en évitant l'imbrication inutile.

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