1
嗨,我有以下Scala代碼與cats
庫斯卡拉MapN與條件
results = patrons.map(p => {
(verifyCardId(p.cardId), verifyAddress(p.address)).map2(
(maybeValidCard, maybeValidAddress) => {
val result = for {
idCheck <- maybeValidCard
addressCheck <- maybeValidAddress
} yield CheckResult(p.name, idCheck, addressCheck)
}
})
其中verifyCardId
和verifyAddress
是外部API調用返回Future
這在某種程度上非常昂貴和費時。
的問題是我怎麼做到以下幾點:
- 如果顧客的一個沒有卡,則代碼應該能夠跳過檢查該卡還必須檢查顧客的地址
- 如果該客戶有兩個,那麼代碼應該檢查卡和地址
我該如何改進現有的代碼?感謝堆
編輯: 添加有關偏好的更多信息跳過昂貴的API調用之一
感謝您的回答,但我想我沒有解釋我的意圖不夠好。我已經更新了這個問題。誠然,這兩個驗證不依賴於對方。但如果兩者都可以同時調用以節省時間,則也是首選。我的意圖是跳過其中的一個特定場景(即沒有卡) –
我更新了答案。只有通話結果已解開。期貨是以異步方式並行計算的。 – Zernike