一定很简单。但由于某种原因,我无法使其发挥作用。
io.linesR(...)
,我有一行文件的行,没关系。Processor.emitAll()
,我有一组预定义的值。它也有效。但我真正需要的是异步生成scalaz-stream的值(好吧,来自Akka actor)。
我试过了:
async.unboundedQueue[String]
async.signal[String]
然后调用queue.enqueueOne(...).run
或signal.set(...).run
并听取queue.dequeue
或signal.discrete
。只需使用.map
和.to
。一个例子证明可以使用另一种流 - 使用处理器或文件中的行。
秘密是什么?创建要在以后流式传输的频道的首选方法是什么?如何用来自另一个上下文的值来提供它?
谢谢!
答案 0 :(得分:0)
如果值是以异步方式生成的,但是可以从流中驱动,我发现使用"原语"最容易。 await
方法并手工构建流程"。你需要一个间接递归函数:
def processStep(v: Int): Process[Future, Int] =
Process.emit(v) ++ Process.await(myActor ? NextValuePlease())(w => processStep(w))
但是如果你需要一个真正的异步过程,从其他地方开始,我从未这样做过。