Buduję bibliotekę, która w ramach swojej funkcjonalności wysyła żądania HTTP. Aby to działało w wielu środowiskach, które będzie wdrażane, chciałbym móc pracować z Futures lub bez.Syncronous Scala Przyszłość bez osobnego wątku
Jedną z opcji jest skonfigurowanie przez bibliotekę typu jej typu odpowiedzi, aby można było utworzyć instancję biblioteki o typie Future
lub instancję typu Id
, w zależności od tego, czy używana jest asynchroniczna implementacja protokołu HTTP. (Id
może być monadą Identity - wystarczającą do ujawnienia użytkownikom spójnego interfejsu)
Zacząłem od tego podejścia, ale jest skomplikowane. Zamiast tego chciałbym użyć wszędzie typu Future, w razie potrzeby boksując odpowiedzi synchroniczne w przyszłości. Rozumiem jednak, że korzystanie z kontraktów Futures zawsze pociąga za sobą pewien rodzaj wątku. To nie będzie latać w np. AppEngine (wymagane środowisko).
Czy istnieje sposób na stworzenie przyszłości z wartości, która zostanie wykonana na bieżącym wątku, a zatem nie spowoduje problemów w środowiskach, w których nie jest możliwe odrodzenie wątków?
(ps jako dodatkowy wymóg, muszę być w stanie przejechać zbudować bibliotekę z powrotem do Scala v2.9.1, które mogłyby ograniczyć funkcje dostępne w scala.concurrent)
'Czy istnieje sposób na stworzenie przyszłości z wartości, która będzie być wykonane na bieżącym wątku 'Dlaczego warto korzystać z przyszłości? – Jatin
Jak wyjaśniam, aby utworzyć spójny typ zwrotu w implementacjach – adamnfish
Przykro mi, że nie zrozumiałem tego pytania. Jeśli masz na myśli, że masz już końcową wartość wyniku i potrzebujesz dla niego przyszłego opakowania, to może skorzystasz z 'Obietnicy'? – Jatin