Apollo-link: Ajouter une option de délai d'attente pour apollo-link-http

Créé le 20 févr. 2019  ·  7Commentaires  ·  Source: apollographql/apollo-link

Ce serait très bien de pouvoir inclure une valeur de délai d'attente en millisecondes dans les options apollo-link-http.

Même si cela ne peut pas interrompre la récupération en cours pour le moment, ce serait très utile pour que chacun n'ait pas à lancer sa propre solution :

https://stackoverflow.com/questions/40837676/apolloclient-timeout-best-option
https://stackoverflow.com/questions/47198402/how-to-set-a-timeout-on-a-request-with-apollo-client

feature

Commentaire le plus utile

Bonjour Apollo Team, Il est très utile d'avoir une option de délai d'attente prise en charge par défaut dans l'implémentation du client apollo graphql. Comme cela est étroitement lié aux demandes des clients, il est juste de demander le délai d'attente.
Prévoyez-vous déjà cette fonctionnalité ? Quelle est votre position actuelle sur cette demande ?

Hâte de vous entendre.

Merci
Aravind

Tous les 7 commentaires

Oui, il devrait être possible d'envelopper la récupération et de chronométrer la demande si nécessaire.

Si les gens dépendent de la version sans délai d'expiration, nous aurions besoin de fournir un opt-out pour ce comportement.

Nous pouvons utiliser abortConttoller pour l'annulation elle-même.

Les pensées? @hwillson

@dshook @JoviDeCroock Je pense que ce que vous voulez vraiment, c'est un lien de temporisation. Vraisemblablement, vous voulez limiter le temps que l'appelant peut avoir à attendre une réponse, et simplement renvoyer une erreur si aucune réponse ne revient dans ce délai, n'est-ce pas ? Si c'est le cas, le mettre dans le lien http lui-même ne le rendra pas composable avec d'autres liens. Votre requête peut également être en attente ou bloquée dans n'importe quel autre lien, il n'est pas nécessaire que ce soit le lien de nouvelle tentative. Il peut s'agir de apollo-link-retry, apollo-link-serialize, apollo-link-queue, etc. les requêtes qui ont pris trop de temps (en les annulant et en renvoyant une erreur), quel que soit l'endroit où la requête est en attente dans la pile.

Comme vous l'avez souligné, l'annulation de la demande après son expiration ne garantit pas que le serveur ne l'a pas vue, alors soyez prudent avec les mutations qui ne sont pas idempotentes.

PS : Il semble que quelqu'un ait déjà créé un lien d'expiration (apollo-link-timeout). Malheureusement, il n'est pas très flexible et casse l'abstraction du lien (par exemple, atteindre le lien de récupération pour abandonner la demande et renvoyer un timeoutRef qui peut être appelé de n'importe où), il ne semble pas avoir été bien testé, a des doutes par défaut (délai d'expiration de 15 s au lieu d'aucun délai d'expiration) et n'est pas très flexible (par exemple, le délai d'expiration ne peut pas dépendre des variables de requête), mais cela fera probablement l'affaire pour vous.

Je suis d'accord que ce serait génial, mais je comprends que l'API Fetch n'a pas de mécanisme de temporisation, donc je ne sais pas si Fetch est utilisé sous le capot ou si seules des promesses régulières sont utilisées.

apollo-link-timeout n'est pas flexible comme @helfer l'a mentionné. Je pense que la timeout devrait être dynamique. Comment pouvons-nous gérer le délai d'attente de la meilleure façon ? 🤣

_ exemple de requête _

<Query
  query={FETCH_QUERY}
  context={{ timeout: 5000 }}
>...</Query>

Je veux juste faire un suivi ici, quelle est la solution actuelle acceptable ? Et cela représente un scénario du monde réel et semble être une demande juste pour un délai d'attente.

Bonjour Apollo Team, Il est très utile d'avoir une option de délai d'attente prise en charge par défaut dans l'implémentation du client apollo graphql. Comme cela est étroitement lié aux demandes des clients, il est juste de demander le délai d'attente.
Prévoyez-vous déjà cette fonctionnalité ? Quelle est votre position actuelle sur cette demande ?

Hâte de vous entendre.

Merci
Aravind

Cette fonctionnalité est-elle toujours sur la bonne voie ? Nous pourrions vraiment bénéficier de l'option de temporisation si elle est disponible.

Cette page vous a été utile?
0 / 5 - 0 notes