Scala:用于未来理解的 ExecutionContext

2024-02-29

当我做一个future,或应用类似的方法onSuccess and map,我可以为它们指定 ExecutionContext。

例如,

val f = future {
  // code
} executionContext

f.map(someFunction)(executionContext)

f onSuccess {
  // code
} executionContext

但是,如果我使用 future 的理解式,我如何为yield part?

for {
  f <- future1
  g <- future2
} yield {
  // code to be executed after future1 onSuccess and future2 onSuccess
  // What ExecutionContext runs this code?
} // (executionContext) here does not work

并且,如果没有指定,什么 ExecutionContext 会运行yield中的代码?


EDIT

好的。感谢答案,我发现了一些东西。
如果我不定义或导入implicit执行上下文 (like Implicits.global), for 理解无法编译。这意味着,for-comparion 使用隐式 ExecutionContext。

那么,如何在没有隐式 ExecutionContext 的情况下使用 for-compression,即如何指定?


The ExecutionContext参数实际上是implicit。这意味着您可以:

import scala.concurrent.ExecutionContext

implicit val context = ExecutionContext.fromExecutor(//etc)
for {
  f <- future1
  g <- future2
} yield {
  // code to be executed after future1 onSuccess and future2 onSuccess
  // What ExecutionContext runs this code?: the one above.
}

您还有一个默认值,即scala.concurrent.ExecutionContext.Implicits.global。 它具有与运行机器上的处理器一样多的线程。

默认情况下,它不会被所有 Futures 使用,您仍然需要导入它。

Update:如果你确实想指定,尽管不推荐,你可以解开for yield

val combined = futureA.flatMap(x => futureB)(context)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Scala:用于未来理解的 ExecutionContext 的相关文章

随机推荐

  • MySQL - 连接上的特定列?

    在进行连接 内部 左外部 右外部或其他 时 如何指定表中的哪些列要连接到原始表中 考虑以下示例 SELECT FirstName FROM User LEFT OUTER JOIN Provider ON User ProviderID P
  • 谁能量化 C++ 和 Java 之间的性能差异?

    在 JIT 出现之前 Java 最初速度很慢 但现在的性能非常接近 C 我想知道是否有人对这两种语言进行了可衡量的性能比较 与C 相比 Java的不足在哪里 Java 为开发人员提供了许多生产力提升 因此他们可以更快地编写应用程序 因为没有
  • Mockito:使用类型兼容的参数验证重载方法

    考虑你想要mock一个接口使用Mockito包含以下方法签名 public void doThis Object o public void doThis Object o 我需要verify that doThis Object o 而不
  • 当仪表板按钮被禁用时,我们可以显示不同的工具提示吗?

    我专门使用 Tridion 2011 的 PowerTools 扩展 但这适用于仪表板中带有按钮的任何 Anguilla 扩展 我们可以设置
  • getElementById() 高效吗? [复制]

    这个问题在这里已经有答案了 我经常用这个方法getElementById id1 在我的方法中 我用它来查找 HTML 中的某些元素 我想知道如果每次都必须搜索整个 DOM 我是否需要关心我使用它的程度 这个方法如何运作 它是否解析 DOM
  • 创建具有大量标志的位标志变量或如何创建大位宽数字

    假设我有一个枚举 其位标志选项大于标准数据类型中的位数 enum flag t FLAG 1 0x1 FLAG 2 0x2 FLAG 130 0x400000000000000000000000000000000 由于多种原因 这是不可能的
  • 如何检查字符串是否与 Python 中的设定模式匹配?

    我想将字符串与特定模式或单词集匹配 如下所示 the apple is red是查询并且the apple orange grape is red orange violet是要匹配的模式 这些管道代表可以相互替换的单词 该模式也可以分组为
  • 如何检索单元格评论的文本

    我找到了很多用于创建的示例 但没有找到用于检索单元格注释文本的示例 我错过了一些明显的事情吗 Range Comment Text似乎在这里工作没有任何问题 e g if not ActiveCell Comment is nothing
  • RestKit 不会从本地存储中删除孤立对象

    您好 我已将 RestKit 从 0 10 2 更新到 0 20 3 现在更新后 当 Web 服务中缺少对象时 RestKit 不会从本地存储中删除它们 我知道 RestKit 0 20 x 支持它 但我无法配置它 我按照这里给出的例子进行
  • 如何通过其值而不是位置设置微调器默认值?

    我的数据库中有 1 50 条记录 我使用游标获取这些数据 并使用简单游标适配器将这些值设置为 Spinner 现在我需要的是我想设置一个值 例如第 39 个值 作为默认值 但我不想通过它的位置来设置它的值 我知道如何通过其位置设置微调器默认
  • 在Centos 6.6 64位中安装pymssql

    我尝试在 Centos 6 6 中 pip install pymssql 但不断遇到此错误 mssql c 314 22 错误 sqlfront h 没有这样的文件或目录 cpp helpers h 34 19 错误 sybdb h 没有
  • 检测节点在场景中何时可见

    我正在尝试找到一种方法来检测 或接收通知 节点已添加到场景中并且可见 我正在主 JavaFx 线程中创建 Node 对象 并将它们添加到舞台和场景中 使用Platform runLater 但是 我希望 Node 对象接收已添加到场景中并且
  • Typescript:将 JSON 对象转换为类/接口对象

    我正在尝试将 API 响应转换为打字稿类 接口 这里 API 返回具有某些属性的对象列表 但我只需要响应对象的少数属性 API响应示例 Id 1 Name test Description Test PropertyX x Property
  • DNS 在 PHP 中不工作(但一般情况下可以)

    以下脚本 返回 DNS 记录列表 但最终在 file get contents 上失败 尽管 phpinfo 说 allow url fopen On On allow url include Off 出现以下错误 PHP 消息 PHP 警
  • 从 Numpy 中的多个切片中选择

    说我们有 a np ones 3 3 3 and slices 0 1 slice None 0 slice None 0 slice None 1 0 有没有一种简单的方法来选择 更改值a from slices 例如 我想分配0 to
  • 在 JSF 中向 selectOneMenu 添加“未选择任何内容”选项的最佳方法

    我想知道允许用户在 selectOneMenu 中不选择任何内容的最佳或最简单的方法是什么 我的示例 我有一个注册用户列表 管理员应该能够按某些条件过滤显示的用户列表 这些标准 例如用户类型 员工 客户 可以通过 selectOneMenu
  • Twitter bootstrap .popover 不工作

    我正在尝试让 Twitter Bootstrap 的 popover 工作 并且我几乎复制了我网站上的代码 但它告诉我 Object object object 在检查元素上没有方法 popover 我在 bootstrap tooltip
  • 根据另一列中的值创建新的指标列

    我有一些数据看起来像这样 import pandas as pd fruits apple pear peach df pd DataFrame col1 i want an apple i hate pears please buy a
  • PHP Doctrine 初学者:Doctrine\ORM\Tools\Setup 未找到

    我是教义的初学者 我刚刚安装了 pear 主义 2 3 3 并想测试它 为了测试教义 我写了一个名为 person 的类 Entity class person Id Column type integer GeneratedValue p
  • Scala:用于未来理解的 ExecutionContext

    当我做一个future 或应用类似的方法onSuccess and map 我可以为它们指定 ExecutionContext 例如 val f future code executionContext f map someFunction