#scala #akka #akka-stream
#scala #akka #akka-stream
Вопрос:
В некоторых крайних случаях я возвращаю пустой источник. Есть ли какой-либо способ для вызывающей стороны проверить, является ли возвращаемый источник пустым или нет, прежде чем запускать его?
Ответ №1:
Есть ли какой-либо способ для вызывающей стороны проверить, является ли возвращаемое
Source
значение пустым или нет, прежде чем запускать его?
Нет. Единственный способ определить, является ли a Source
пустым, — это запустить его.
Ответ №2:
Источник Этап обработки с ровно одним выходом, выдающий элементы данных всякий раз, когда последующие этапы обработки готовы их принять.
Согласно определению, мы не можем знать элемент источника, если не существует нисходящего потока для получения.
Итак, насколько я понимаю, мы не можем проверить, пуст источник или нет, не запустив его. Пожалуйста, не стесняйтесь комментировать свои мысли
Я думаю, что одним из способов достижения этого требования является
val x: Future[Boolean] = Source.empty.runWith(Sink.seq).transform{
case Success(lst) => Success(lst.isEmpty)
case Failure(_) => Success(true)
}
Комментарии:
1. Вопросы, заданные специально для проверки источника «перед его запуском».
2. Я обновил ответ. Не могли бы вы, пожалуйста, проверить это?
3. Ваш ответ противоречит сам себе. Вы говорите, что мы не можем проверить, является ли источник пустым или нет, но затем вы говорите «один из способов выполнить требование» и приводите пример, который запускает
Source
.