swift - 蒸汽中的异步执行。如何控制in的循环
问题描述
func loadBy(_ req: Request) throws -> Future<[News]> {
let parentId = try req.parameters.next(String.self)
let parent = try self.findParentBy(req, parentId: parentId)
var childNews: [News] = []
let qq = parent.map(to: [News].self) { parentNews in
for chilId in parentNews!.childIds {
let ch = News.query(on: req).filter(\News.newsId == chilId).first().map(to: News?.self) { child in
if let child = child {
childNews.append(child)
}
return child
}
}
return childNews
}
return qq.flatMap(to: [News].self) { childNews in
return childNews.map { news in
Future.map(on: req) { news }
}.flatten(on: req)
}
}
在获取值之前返回
我想等到获得所需的值然后返回它们
解决方案
谢谢。它适用于
func loadBy(_ req: Request) throws -> Future<[News]> {
let parentId = try req.parameters.next(String.self)
let parent = try self.findParentBy(req, parentId: parentId)
var childNews: [News] = []
return parent.flatMap(to: [News].self) { parentNews in
return parentNews!.childIds.map { (key) in
return News.query(on: req).filter(\News.newsId == key).first().map(to: Void.self) { child in
if let child = child {
childNews.append(child)
}
}
}.flatten(on: req).map {
return childNews
}
}
}
func loadBy(_ req: Request) throws -> Future<[News]> {
let parentId = try req.parameters.next(String.self)
let parent = try self.findParentBy(req, parentId: parentId)
return parent.flatMap(to: [News].self) { parentNews in
return News.query(on: req).filter(\News.newsId ~~ parentNews!.childIds).all()
}
}
推荐阅读
- html - 如何通过powershell从HTML文件中删除一列
- javascript - 将“this”引用到数组
- sql - 使用相关筛选筛选 SQL Server 数据
- azure - 如何在 Azure API 管理策略中读取 SOAP 消息并创建变量
- javascript - 警告:React.createElement:类型无效——需要一个字符串或一个类/函数,但得到:未定义
- python - 如何随机更改数组的索引?
- vue.js - vue router-link 是否有(标准)方法可以使用不同的键或数据刷新相同的路由?
- jmeter - 是否可以在 Fiddler 工具中捕获 NeoLoad 脚本重播?
- r - 尝试使用 tidyverse 库时出错
- discord.js - 当您拥有频道和消息 ID 但没有原始消息对象时,如何通过 discrod.js 访问不和谐消息?