假設你有你看獲取的URL列表:
val urls = List(
"http://www.google.com",
"http://stackoverflow.com",
"http://www.bing.com"
)
在玩2.5.X,我們可以處理這些順序,並使用akka.pattern.after
迫使每個調用之間的異步延遲。我們flatMap
Future
Web服務調用的結果將返回相同的值後一秒。
Future.traverse(urls) { url =>
wsClient.url(url).get().flatMap { result =>
// potentially process `result` here
akka.pattern.after(1.second, actorSystem.scheduler)(Future.successful(result))
}
} // returns Future[List[WSResponse]]
這需要你有一個WSClient
和ActorSystem
組件可用,以及在隱ExecutionContext
範圍。
在玩的2.4.x和更早版本,你可以使用Promise.timeout
做同樣的:
Future.traverse(urls) { url =>
wsClient.url(url).get().flatMap { result =>
// potentially process `result` here
Promise.timeout(result, 1.second)
akka.pattern.after(1.second, actorSystem.scheduler)(Future.successful(result))
}
}
玩什麼版本的? –
玩版本2.5.3 – ceran