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.
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.