gpt4 book ai didi

list - 按顺序调用任意数量的 WS.url().get()

转载 作者:行者123 更新时间:2023-12-02 00:33:11 25 4
gpt4 key购买 nike

我有一个 URL 列表[字符串],我想按顺序加载和处理(解析、存储到数据库)。

我只找到了固定长度的示例,例如:

    def readUrls = Action {
implicit request => {
implicit val context = scala.concurrent.ExecutionContext.Implicits.global

val url1 = "http://some-website.com"
val url2 = "http://other-website.com"

Async {
for {
result1 <- WS.url(url1).get()
result2 <- WS.url(url2).get()
} yield {
Ok(result1.body + result2.body)
}
}
}

但是我需要处理这只小狗,而不是 url1 和 url2:

val urls = List("http://some-website.com", "http://other-website.com")

非常感谢您的任何提示和建议!

最佳答案

如果您想按顺序将 Future 任意链接在一起,foldLeft 应该可以完成这项工作:

urls.foldLeft(Future.successful[String]("")){ case (left, nextUrl) =>
left.flatMap{ aggregatedResult =>
WS.url(nextUrl).get().map( newResult =>
aggregatedResult + newResult.body
)
}
}

由于您只是将请求主体组合在一起,因此我给了 foldLeft 一个 FutureString 的初始值,每个折叠中的步骤将添加到下一个响应正文。

关于list - 按顺序调用任意数量的 WS.url().get(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24439108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com