Я создаю библиотеку, которая в рамках своей функциональности делает HTTP-запросы. Чтобы заставить его работать в нескольких средах, он будет развернут, я бы хотел, чтобы он работал с фьючерсами или без них.Syncronous Scala Будущее без отдельной темы
Один из вариантов заключается в том, что библиотека параметризует тип ответа, поэтому вы можете создать экземпляр библиотеки с типом Future
или экземпляр типа Id
, в зависимости от того, используете ли вы асинхронную реализацию HTTP. (Id
может быть монодатой Identity - достаточно для обеспечения согласованного интерфейса для пользователей)
Я начал с этого подхода, но у него получилось сложнее. То, что я действительно хотел бы сделать, это использовать тип будущего везде, в случае необходимости, синхронные ответы в боксе. Тем не менее, я понимаю, что использование Futures всегда будет включать какой-то поток. Это не будет летать, например. AppEngine (требуемая среда).
Есть ли способ создать Будущее из значения, которое будет выполняться в текущем потоке и, следовательно, не будет вызывать проблемы в средах, где невозможно создавать потоки?
(пс в качестве дополнительного требования, мне нужно, чтобы иметь возможность пересечь построить библиотеку обратно в Scala v2.9.1, которые могут ограничить возможности, доступные в scala.concurrent)
'Есть ли способ создать будущее из значения, которое будет выполняться в текущем потоке 'Зачем использовать будущее? – Jatin
Как я объясню, чтобы создать согласованный тип возвращаемого значения в реализациях – adamnfish
Прошу прощения, я не понял вопрос. Если вы имеете в виду, что у вас уже есть конечное значение результата и для него нужна будущая оболочка, то как насчет использования 'Promise'? – Jatin