0
我想要做的是一次又一次地重複GET請求到服務器,以便我可以同步本地數據與遠程服務器。我想通過使用Future
s 而不涉及akka這樣做,因爲我只想了解如何在較低級別執行此操作的基本思路。沒有async
和await
最好或者是因爲它們是Futures
和Promises
的高級功能,因此我想自己使用Futures
和Promises
。向服務器重複異步請求
所以這是我的功能:
def sendHttpRequestToServer(): String = { ... }
def send: Unit = {
val f = future { sendHttpRequestToServer() }
f onComplete {
case Success(x) =>
processResult(x) // do something with result "x"
send // delay if needed and send the request again
case onFailure(e) =>
logException(e)
send // send the request again
}
}
這就是我想可能是。我怎麼能改變它,算法中有沒有錯誤?你的想法。
UPDATE:
正如我已經知道了,期貨不是專爲經常性的任務,只有一次性的。因此,他們不能在這裏使用。那我該用什麼?
但是你怎麼知道processResult和logException是否有try ... catch塊? –
我不知道。這種方式我不必知道,processResult不需要自己單獨的try/catch /調用'logException',所以代碼是DRYer。 – wingedsubmariner
我不認爲如果processResult和logException沒有try ... catch然後代碼DRYer。你爲什麼這麼認爲? –