Niedawno niektórzy współpracownicy i ja dyskutowaliśmy o tym, czy usługi AngularJS powinny mieć stan, czy nie. Wymyśliliśmy kilka argumentów za i przeciw niemu i chciałem uzyskać dodatkowe przemyślenia i opinie na ten temat. Podczas moich poszukiwań znalazłem this, ale wydaje się, że nie ma tu żadnej wyraźnej najlepszej praktyki. W świecie, który nie ma klienta, usługa nigdy nie powinna utrzymywać stanu, ale zaczynam myśleć, że może to być akceptowalne po stronie klienta, ponieważ jest to inny problem.Czy usługa kątowa ma stan?
Powody usług posiadających Stan:
- Usługa nie będzie dostępna przez wielu wątków. Każda przeglądarka będzie miała własną instancję usługi.
- Umożliwia usłudze utrzymanie stanu, którego dotyczy, zamiast przechowywać go w rootScope. obudowuje
Powody usług nie trzymać Stan:
- usługi nie są już idempotent. Funkcje wywołujące mogą zmieniać stan i dlatego mogą mieć różne wyniki podczas wywoływania w oparciu o stan usługi.
- Myślę, że ogólnie byłoby łatwiej przetestować.
Jednym ze sposobów, które mogłyby zająć nr 2 w sekcji „Usługi dla gospodarstwa państwowego” byłoby mieć obiektu AppState ustawiony na rootScope który zawiera aktualny stan aplikacji. Wtedy cały stan zostanie zebrany w jednym miejscu, a następnie po prostu wyciągniesz z niego to, czego potrzebujesz. Znalazłem to i zastanawiałem się,
Dobre punkty dotyczące $ http i $ resource. Poza tym podoba mi się twoja myśl o tylko stanie przechowywania, który nie byłby modyfikowany przez funkcje wywoływane w usłudze (z wyjątkiem może podczas inicjowania usługi). – testing123