如何等待多个期货在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
打印(“摘要:\(摘要)”)
打印(“赞助商注册:\(赞助商注册)”)
}