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.