scala - пример отправки, не работающий

Я следую самому первому примеру в отправкадоктора -

    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)
  }
}
3
nl ja de
мне это работает отлично, как..., и это должно, потому что для понимание обертывает println команда в Обещание объект, таким образом, это будет выполнено только, когда c стоимость будет доступна
добавлено автор pagoda_5b, источник
какую версию отправки вы используете? можно ли показать build.sbt или безотносительно?
добавлено автор pagoda_5b, источник
Так или иначе это смотрит на меня как вопрос, более соответствующий пошлите список рассылки
добавлено автор pagoda_5b, источник
Я don' t думают, блокирует.. res - все еще будущее нет? попробуйте println (res.get)
добавлено автор twillouer, источник
приклеивание моего build.sbt выше в вопросе.
добавлено автор Shwetanka, источник

2 ответы

Хм, не уверенный здесь, но возможно проблема состоит в том, что ваша главная нить закончена настолько быстро, что у фонового потока (в котором Отправка работает асинхронно) нет времени на принятие мер?

Чтобы проверить это, можно попытаться вставить задержку:

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

Конечно, в реальной программе вы никогда не должны должны быть делать это.

Другая возможность для задержки просто readLine() в конце основного.

6
добавлено
вы, возможно, должны были бы увеличить задержку в случае, если ваша связь очень медленная.
добавлено автор AnonGeek, источник
можно также проверить, работает ли код, когда вы приклеиваете его в пульте системы онлайн бронирования
добавлено автор pagoda_5b, источник
Да дело обстоит так. Я получаю продукцию, когда я добавляю задержку. Спасибо!
добавлено автор Shwetanka, источник

Это работает здесь:

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 = [email protected]

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

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

scala> BR

Обратите внимание, что BR , который появился после быстрого.

Вы уверены, что страна не была напечатана где-нибудь, но вы не заметили, потому что она путалась с другой продукцией?

0
добавлено
I' m управление им как главная функция. Я обновил свой вопрос.
добавлено автор Shwetanka, источник
pro.jvm
pro.jvm
3 503 участник(ов)

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш сайт: projvm.com projvm.ru Наш канал: @proJVM Вакансии: @jvmjobs Конфы: @jvmconf

Scala User Group
Scala User Group
1 486 участник(ов)

[RU] Scala Chat. Rules, additional links, FAQ: https://telegra.ph/Russian-Speaking-Scala-User-Group-08-27

Scala Jobs
Scala Jobs
852 участник(ов)

Rules: http://telegra.ph/My-lyudi-i-ehto-znachit-chto-nam-nuzhna-organizaciya-02-07 Main Scala Channel: https://t.me/scala_jobs_feed Flood Room: https://t.me/scala_ponv