javascript - Jaký je nejlepší způsob, jak získat výsledek akce?
Zajímá mě, jestli je získání výsledku akce platným přístupem, a pokud ano, jak toho dosáhnout?
Například řekněme, že mám stránku s formulářem pro vytváření entit, po úspěšném vytvoření entity bych chtěl uživatele přesměrovat na detailní zobrazení entity, jinak (v případě neúspěchu) aktualizovat formulář pomocí chybových zpráv. Chtěl bych to provést, aniž bych zaměňoval vrstvy aplikace (např. aby nedocházelo k přesměrování uživatele v epické funkci/efektu po úspěchu).
Mám na tuto problém několik přístupů v mysli:
(pozorovatelný vzorec) spusťte akci „trigger“ (
entity_add), poté někde ve svém epiku/efektu spusťte akci úspěchu (entity_add_success) nebo selhání (entity_add_failure), počkejte na akci selhání nebo úspěchu a proveďte akci - tento přístup má patrnou nevýhodu: mezitím mohou být vytvořeny jiné entity a jak v takovém případě rozlišit akce selhání/úspěchu jednotlivých entit?(callback vzor) spustit akci trigger s dalším parametrem callback, který by měl být zavolán, když bude výsledek akce určen, tento přístup má také nevýhodu (i když ne tak velkou jako ta předchozí): možnost vytvoření callback pekla.
(vzor služby) vzdát se používání flux v tomto případě, používat služby přímo, nevýhoda návrhu: míchání aplikačních vrstev
Rád bych slyšel jakékoliv nápady.
Odpověď č. 1
Druhou možnost (připojení callbacku k zahajující akci) jsem několikrát úspěšně použil. Podle mého názoru je to nejlepší kompromis. Riziko hluboce zanořených callbacků („callback hell“) nevidím, protože obvykle potřebuji spustit jen jednu akci a pak udělat něco jednoduchého, například přejít na jinou stránku.