繁体   English   中英

scala - 调度示例不起作用

[英]scala - dispatch example not working

我正在关注调度文档中的第一个示例 -

    val svc = url("http://api.hostip.info/country.php")
    val country = Http(svc OK as.String)
    for (c <- country)
      println(c)

我没有打印任何输出。 当我将其更改为下面以进行阻塞调用时,我得到输出。

val res = country()
println(res)

需要帮助。

完整的程序 -

import dispatch._
object DispatchTest {

  def main(args: Array[String]) {
    val svc = url("http://api.hostip.info/country.php")
    val country = Http(svc OK as.String)
    for (c <- country)
      println(c)
  }
}

嗯,这里不太确定,但也许问题是你的主线程完成得如此之快,后台线程(Dispatch异步工作)没有时间采取行动?

要检查这一点,您可以尝试插入延迟:

for (c <- country) // Here we spawn a background thread!
  println(c)

Thread.sleep(500) // So let's wait half a second for it to work

当然,在真正的程序中,你永远不需要这样做。

延迟的另一个选择只是main的末尾的readLine()

它在这里工作:

scala> import dispatch._
import dispatch._

scala> val svc = url("http://api.hostip.info/country.php")
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
svc: com.ning.http.client.RequestBuilder = com.ning.http.client.RequestBuilder@2f823290

scala> val country = Http(svc OK as.String)
country: dispatch.Promise[String] = Promise(-incomplete-)

scala> for (c <- country)
     |   println(c)

scala> BR

注意提示后出现的BR

你确定这个国家没有印在某个地方,但你没有注意到因为它与其他输出相混淆了吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM