Maison >interface Web >js tutoriel >Les fonctions JavaScript asynchrones renvoient-elles toujours des promesses ?

Les fonctions JavaScript asynchrones renvoient-elles toujours des promesses ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-23 16:20:12343parcourir

Do Async JavaScript Functions Always Return Promises?

Fonctions asynchrones et retours de promesses implicites

En JavaScript, les fonctions asynchrones marquées par le mot-clé async renvoient implicitement des promesses. Cela est vrai même si vous renvoyez explicitement des valeurs non promises ou si vous ne renvoyez rien du tout.

Emballeur de promesse implicite

Si vous ne renvoyez pas explicitement un promesse, la valeur que vous renvoyez sera automatiquement enveloppée dans une promesse.

async function increment(num) {
  return num + 1;
}

// Logs: 4
increment(3).then(num => console.log(num));

Cela signifie que même si la valeur de retour est un nombre, elle sera convertie en un promesse à des fins de traitement asynchrone.

Promesses non emballées

Les promesses se déroulent automatiquement, ce qui signifie que si vous renvoyez une promesse pour une valeur à partir d'une fonction asynchrone, vous recevrez une promesse pour la valeur (pas une promesse pour une promesse pour le value).

async function increment(num) {
  return defer(() => num + 1);
}

// Logs: 4
increment(3).then(num => console.log(num));

Comportement incohérent

Le comportement des fonctions asynchrones peut en effet sembler incohérent avec les instructions return traditionnelles, car il diffère lors du renvoi explicite de valeurs non promises. . En effet, les fonctions asynchrones utilisent un type spécial de fonction appelé générateurs, qui ne renvoient pas toujours la même valeur que l'instruction return.

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