我有點困惑如何使用 Swift AWS Lambda 運行時進行異步呼叫。
這是我正在嘗試做的一個例子。這給出了一個錯誤,因為我試圖在 Lambda 運行閉包中使用 await。
// Request, uses Codable for transparent JSON encoding
private struct Request: Codable {
let name: String
}
// Response, uses Codable for transparent JSON encoding
private struct Response: Codable {
let message: String
}
private func sendResponse(request: Request) async -> Response {
return Response(message: "Hello, \(request.name)")
}
// In this example we are receiving and responding with `Codable`.
Lambda.run { (context, request: Request, callback: @escaping (Result<Response, Error>) -> Void) in
callback(.success(await sendResponse(request: request)))
}
基本上,我想使用 AsyncHTTPClient 包獲取一些資料并將回應回傳給 Lambda。
uj5u.com熱心網友回復:
看起來您遇到了麻煩,因為您試圖await在不支持并發的背景關系中呼叫。
解決此問題的一種方法是使用Task. 所以你應該能夠寫出類似的東西:
Lambda.run { (context, request: Request, callback: @escaping (Result<Response, Error>) -> Void) in
Task {
let response = await sendResponse(request: request)
callback(.success(response))
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/507548.html
標籤:迅速 亚马逊网络服务 swift-aws-lambda 运行时
