Skip to content

queue

La fonction queue() réserve un slot pour l'exécution courante afin de sérialiser ou limiter les exécutions concurrentes d'un même flow.

Exemple interactif

Syntaxe

typescript
function queue<
	GenericConcurrency extends number
>(
	params?: {
		concurrency?: GenericConcurrency;
	}
): AsyncGenerator

Paramètres

  • params.concurrency : Nombre maximum d'exécutions simultanées autorisées pour la même référence de flow. La valeur par défaut est 1.

Valeur de retour

Un générateur asynchrone qui émet un effet de queue et retourne une fonction release à appeler quand l'exécution peut libérer son slot, généralement dans un bloc finally.

Remarques

  • L'état interne est stocké dans une WeakMap dont la clé est la référence du flow exécuté.
  • Pour partager la même file d'attente entre plusieurs appels, réutilisez le même flow créé avec F.create(...) ou la même fonction obtenue avec F.toFunction(...).
  • Si release() n'est pas appelé, les exécutions suivantes restent bloquées dans la queue.
  • Si une même exécution yield plusieurs fois queue(...), seul le premier effet rencontré est pris en compte par le runner.

Voir aussi

  • calledByNext - Appelle un callback quand une exécution suivante remplace l'actuelle
  • throttling - Ignore ou reporte les appels trop rapprochés
  • exec - Exécute un flow imbriqué dans le flow courant

Diffusé sous licence MIT.