Pourquoi est-ce un inconvénient qu'une promesse ne puisse pas être annulée
淡淡烟草味
淡淡烟草味 2017-06-15 09:22:29
0
4
899

Dans quelles circonstances dois-je annuler une promesse ?

淡淡烟草味
淡淡烟草味

répondre à tous(4)
伊谢尔伦

Promise est conçue comme une machine à états. La transition d'état de l'attente à la résolution/rejet est unidirectionnelle et unique. Il n'y a pas d'état dit d'annulation. L'ajout de l'annulation entraînera davantage de problèmes de statut et n'est pas adapté au modèle Promise (dans ce scénario, les solutions FRP telles que RxJS devraient être plus adaptées).

Quels problèmes de statut l’annulation entraînera-t-elle ? Prenons l'exemple des remboursements du commerce électronique. Vous avez acheté quelque chose (vous avez lancé une promesse en attente), mais vous ne l'avez pas encore reçu (le problème n'a pas encore été résolu). Vous l'avez regretté et avez cliqué sur un remboursement (vous avez modifié le statut pour annuler), mais le processus de remboursement ne peut pas prendre effet. immédiatement, doit être examiné (vous ne pouvez pas le rejeter immédiatement après l'annulation), alors vous avez payé votre salaire et ne souhaitez pas rembourser, vous cliquez donc à nouveau sur [Annuler le remboursement] À ce moment-là, il y a un autre changement de statut asynchrone. (annuler à nouveau), et [Annuler le remboursement] est également asynchrone. Vous pouvez également annuler l'opération [Annuler le remboursement] (annuler avant d'annuler ?) N'oubliez pas qu'à ce moment, chaque étape du changement de statut peut également être mappée. résoudre. Et rejeter. Bonjour les étudiants, veuillez dessiner le diagramme de changement d'état du processus et du code pour mettre en œuvre cette promesse qui prend en charge l'annulation

巴扎黑

Par exemple, la page doit être actualisée une fois toutes les minutes, mais l'interface est très lente, donc lorsque j'envoie une demande la prochaine fois, la dernière demande n'est pas revenue. Dans ce cas, je souhaite annuler la dernière demande.

洪涛

Par exemple, aimer et annuler les opérations like
Si vous utilisez promise et que vous l'aimez par erreur et que vous souhaitez l'annuler, vous devez attendre la fin de l'opération like avant de pouvoir l'utiliser
Il existe donc une version améliorée de promise → observable

阿神

Effectuez deux opérations (deux promesses) en même temps, annulez l'autre lorsque l'une est terminée, et enfin renvoyez le résultat qui réussit en premier.

Mais l'annulation est un écueil. Par exemple, l'annulation par plusieurs threads signifie une exception asynchrone, ce qui signifie que l'opération est soudainement complètement interrompue au milieu de l'opération, sans laisser aucune chance de récupération (sinon l'annulation n'aura aucun sens), il n'y a donc aucun moyen de récupérer ou de revenir. Seules les tâches informatiques purement indépendantes du processeur peuvent être annulées en toute sécurité.

En ce qui concerne l'annulation puis l'annulation de « annuler », il n'existe pas de règle selon laquelle lorsque vous entrez dans l'état d'annulation (état à moitié mort), vous ne pouvez pas passer à d'autres états.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal