0
A
回答
3
可以將所有期貨合併成一個單一的一個具有foldLeft
和flatMap
:
def executeSequentially(ops: Seq[() => Future[Unit]])(
implicit exec: ExecutionContext
): Future[Unit] =
ops.foldLeft(Future.successful(()))((cur, next) => cur.flatMap(_ => next()))
foldLeft
確保從左至右flatMap
給出順序執行的順序。功能是用ExecutionContext
執行的,所以調用executeSequentially
不會阻塞。如果需要,您可以添加回調或等待產生的Future
。
如果您正在使用Twitter Future
S,那麼我想你不會需要通過ExecutionContext
,但foldLeft
和flatMap
的總體思路應該仍然工作。
0
我相信這應該這樣做:
import scala.concurrent.{Await, Future}
import scala.concurrent.duration.Duration
def runSequentially(ops: Seq[() => Future[Unit]]): Unit = {
ops.foreach(f => Await.result(f(), Duration.Inf))
}
如果你想等不到Duration.Inf
,或者在故障停止 - 應很容易做到。
2
如果給出的是序列[未來[T]你可以把它轉換成未來[序列[T]像這樣:除上述:)
相關問題
- 1. Javascript函數執行順序
- 2. SQL函數返回順序編號的
- 3. 矢量化函數返回的順序
- 4. 計數函數返回順序輸出
- 5. JavaScript執行函數返回函數
- 6. javascript函數的執行順序
- 7. javascript函數的執行順序
- 8. pgSQL的SQL函數順序執行
- 9. 函數承諾執行的順序
- 10. JavaScript函數的執行順序
- 11. jquery函數返回順序問題
- 12. javascript:執行函數的順序 - 函數完成處理之前的嵌套函數返回值?
- 13. Express Post函數中回調的執行順序
- 14. 確保Javascript函數和回調按正確的順序執行
- 15. 在Visual C++中執行消息回調函數的順序
- 16. JavaScript函數拒絕按順序執行
- 17. 如何順序執行android函數?
- 18. Wordpress functions.php函數執行順序
- 19. C函數不按順序執行
- 20. 按執行順序列出函數
- 21. JQuery按順序執行函數
- 22. 按順序執行aws lambda函數
- 23. 使用承諾順序執行函數
- 24. MySQL的 - 函數返回執行值
- 25. 執行程序不返回10個未來對象
- 26. javascript函數執行順序和函數後面的代碼?
- 27. 未執行jQuery回調函數
- 28. Javascript回調函數未執行
- 29. JWPlayer回調函數未執行
- 30. JS:回調函數未執行
感謝
有點少樣板非常。 – Jonna