如何等待多个期货在Vapor Swift中完成?
我正试图找出如何等待多个期货交易完成。 我知道如何通过以下方式异步等待它们:如何等待多个期货在Vapor Swift中完成?,swift,xcode,vapor,Swift,Xcode,Vapor,我正试图找出如何等待多个期货交易完成。 我知道如何通过以下方式异步等待它们: summaryFuture.whenSuccess{}但这只处理一种情况。我需要等待summaryFuture和sponsorFuture都完成,然后在发回回复之前与它们一起工作 let summaryFuture = client.post(summaryURL) { post in post.http.headers.add(name: "authtoken", value: token)
summaryFuture.whenSuccess{}
但这只处理一种情况。我需要等待summaryFuture和sponsorFuture都完成,然后在发回回复之前与它们一起工作
let summaryFuture = client.post(summaryURL) { post in
post.http.headers.add(name: "authtoken", value: token)
}.flatMap(to: SummaryModel.self) { (response) in
return try response.content.decode(SummaryModel.self)
}
let sponsorEnrollerFuture = client.post(sponsporEnroller) { post in
post.http.headers.add(name: "authtoken", value: token)
}.flatMap(to: SponsorEnrollerModel.self) { (response) in
return try response.content.decode(SponsorEnrollerModel.self)
}
好的。我想出来了 要等待多个期货完成,您必须使用
.add
。在我的特殊情况下
let summaryFuture = client.post(summaryURL) { post in
post.http.headers.add(name: "authtoken", value: token)
}.flatMap(to: SummaryModel.self) { (response) in
return try response.content.decode(SummaryModel.self)
}
let sponsorEnrollerFuture = client.post(sponsporEnroller) { post in
post.http.headers.add(name: "authtoken", value: token)
}.flatMap(to: SponsorEnrollerModel.self) { (response) in
return try response.content.decode(SponsorEnrollerModel.self)
}
// Now combine the two futures
let multipleFutures = summaryFuture.add(sponsorEnrollerFuture)
// Now I can use
mutipleFutures.whenSuccess = {(summary, sponsorEnroller) in ...}
您可以使用
和
或展平
对于.flatten
您的期货应该返回Void
,因此最终结果也是Future
和
可以这样使用
let summaryFuture=client.post(summaryURL){post-in
add(名称:“authtoken”,值:token)
}中的.flatMap(to:SummaryModel.self){(响应)
返回try response.content.decode(SummaryModel.self)
}
让sponsorEnrollerFuture=client.post(sponsorEnroller){post-in
add(名称:“authtoken”,值:token)
}.flatMap(收件人:SponsorEnrollerModel.self){(响应)中的
返回try response.content.decode(SponsorEnrollerModel.self)
}
//现在将这两种未来结合起来
return summaryFuture.and(sponsorEnrollerFuture).map{summary,sponsorEnrolered in
打印(“摘要:\(摘要)”)
打印(“赞助商注册:\(赞助商注册)”)
}