У меня есть список возможных значений ввода
val inputValues = List(1,2,3,4,5)
У меня очень длинная функция для вычисления результата, который дает мне
def reallyLongFunction( input: Int ) : Option[String] = { ..... }
Используя параллельные коллекции scala, я легко могу сделать
inputValues.par.map( reallyLongFunction( _ ) )
Чтобы получить все результаты параллельно. Проблема в том, что мне не нужны все результаты, мне нужен только ПЕРВЫЙ результат. Как только один из моих вкладов окажется успешным, я хочу получить свой вывод и хочу продолжить свою жизнь. Это проделало много дополнительной работы.
Так как мне получить лучшее из обоих миров? Я хочу
- Получить первый результат, который возвращает что-то из моей длинной функции
- Остановите все мои другие темы от бесполезной работы.
Редактировать -
Я решил это как тупой Java-программист, имея
@volatile var done = false;
Что установлено и проверено внутри моего reallyLongFunction
. Это работает, но не очень скала. Хотел бы лучший способ сделать это ...