- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
给定以下方法...
def doSomething1: Future[Int] = { ... }
def doSomething2: Future[Int] = { ... }
def doSomething3: Future[Int] = { ... }
for {
x <- doSomething1
y <- doSomething2
z <- doSomething3
} yield x + y + z
doSomething2
必须在
doSomething1
完成之后运行。如何依次运行这三种方法?
doSomething1
的可能实现:
def doSomething1: Future[Int] = {
// query the database for customers younger than 40;
// `find` returns a `Future` containing the number of matches
customerService.find(Json.obj("age" -> Json.obj("$lt" -> 40)))
}
Future
是通过内部调用另一种方法创建的。
for {
// get all the transactions generated by the exchange service
transactions <- exchange.orderTransactions(orderId)
//for each transaction create a log
logs <- Future.sequence(tansactions.map { transaction =>
for {
// update trading order status
_ <- orderService.findAndUpdate(transaction.orderId, "Executed")
// create new log
log <- logService.insert(Log(
transactionId => transaction.id,
orderId => transaction.orderId,
...
))
} yield log
})
} yield logs
logService.insert
仅包含一项,
transactions
也会被多次调用。
最佳答案
评论你的帖子
首先,doSomethingX
中的代码是什么样的?更恼怒的是,使用您给定的代码, future 会并行运行。
回答
为了使Future
执行顺序,只需使用
for {
v1 <- Future { ..block1... }
v2 <- Future { ..block2... }
} yield combine(v1, v2)
Future { ..block1.. }
.flatMap( v1 =>
Future { ..block>.. }
.map( v2 => combine(v1,v2) )
)
Future{ ...block1... }
可用),flatMap
方法,其中Future { ...block2... }
的执行。 Future { ...block2... }
在
Future { ...block1... }
之后执行
Future
Future {
<block>
}
ExecutionContext
触发包含的块的执行val f1 = Future { <body> }
val f2 = Future { <otherbody> }
ExecutionContext
的情况),因为这两个值会立即求值。def f1 = Future { ..... }
f1
,将开始执行 future computeSomethingX
方法的中创建的。computeSomething2
在computeSomething1
之后执行的代码段object Playground {
import scala.concurrent.ExecutionContext.Implicits.global
def computeSomething1 : Future[Int] = {
Future {
for (i <- 1 to 10) {
println("computeSomething1")
Thread.sleep(500)
}
10
}
}
def computeSomething2 : Future[String] = {
Future {
for(i <- 1 to 10) {
println("computeSomething2")
Thread.sleep(800)
}
"hello"
}
}
def main(args: Array[String]) : Unit = {
val resultFuture: Future[String] = for {
v1 <- computeSomething1
v2 <- computeSomething2
} yield v2 + v1.toString
// evil "wait" for result
val result = Await.result(resultFuture, Duration.Inf)
println( s"Result: ${result}")
}
}
computeSomething1
computeSomething1
computeSomething1
computeSomething1
computeSomething1
computeSomething1
computeSomething1
computeSomething1
computeSomething1
computeSomething1
computeSomething2
computeSomething2
computeSomething2
computeSomething2
computeSomething2
computeSomething2
computeSomething2
computeSomething2
computeSomething2
computeSomething2
Result: hello10
f1
和f2
)def main(args: Array[String]) : Unit = {
val f1 = computeSomething1
val f2 = computeSomething2
val resultFuture: Future[String] = for {
v1 <- f1
v2 <- f2
} yield v2 + v1.toString
// evil "wait" for result
val result = Await.result(resultFuture, Duration.Inf)
println( s"Result: ${result}")
}
关于scala - 对于理解: how to run Futures sequentially,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32374074/
非常强大的开源数据挖掘工具 SPMF 的文档分别列出了它们: http://www.philippe-fournier-viger.com/spmf/index.php?link=algorithms
tf.keras.models.Sequential() 和有什么区别对比 tf.keras.Sequential() ?我不太了解它们之间的区别。有人可以向我解释一下吗?我是 TensorFlow
程序内聚说模块的部分被分组是因为它们始终遵循一定的执行顺序顺序内聚表示模块的各个部分被分组,因为一个部分的输出是另一个部分的输入像流水线一样的部分。这些定义是模棱两可的。请解释。 最佳答案 在顺序内聚
谁能解释定义以及顺序一致性和静态一致性之间的区别?以最愚蠢的形式:| 我确实读过这个:Example of execution which is sequentially consistent but
本文介绍基于 Python 语言中 TensorFlow 的 Keras 接口,实现深度神经网络回归的方法。 目录 1 写在前面
a)原理:顺序查找就是按顺序从头到尾依次往下查找,找到数据,则提前结束查找,找不到便一直查找下去,直到数据最后一位。 b)图例说明: 原始数据:int[]a={4,6,2,8,1,9,0,3};
我正在为数据路径电路实现 FSM Controller 。 Controller 在内部递增计数器。当我模拟下面的程序时,计数器从未更新。 reg[3:0] counter; //incrementi
我对为什么REPA函数computeP将其结果打包在monad中感到困惑。它具有以下类型签名。 computeP :: (Load r1 sh e, Target r2 e, Source r2 e,
我知道同步 Ajax 已被弃用。但我有一些代码正在使用它,我的问题是: 假设方法 A 发出一个等待服务器的正常(异步)Ajax 请求。同时,一些其他事件触发方法B,该方法发出同步Ajax请求。现在,假
例如,我有一个这样的数据框,每一行没有重复的数字,数字按每一行排序。 W1 W2 W3 W4 1 1 3 4 7 2 4 5 6 7 3 1 2 5 8 4 2 5
我正在尝试合并两个模型的输出,并使用 keras 顺序模型将它们作为输入提供给第三个模型。 型号1: inputs1 = Input(shape=(750,)) x = Dense(500, acti
我有一个 JSF 页面,用户可以在其中将他们的汽车输入我的数据库。该表单具有三个输入字段: 制造商 模型 注册 我正在使用 PrimeFaces 3.0.M2,Manufacturer 和 Model
我目前有一个如下所示的 keras 模型: model = keras.Sequential() model.add(keras.layers.Dense(100, activation=tf.nn.
假设“连续”日期时间是彼此在特定时间间隔(即三十分钟)内的日期时间;非顺序日期时间是比彼此之间的时间段更长的日期时间。 给定一个由日期时间列表(作为字符串)组成的输入,我想派生一个顺序日期时间列表的列
我有许多服务器在运行,需要在它们之间生成序列号,这些序列号将以 5 个字符的字母数字字符串表示。目前,这被 Base32 编码略微篡改了自午夜以来的秒数,因为这对于测试目的来说足够独特。我们最好使用
我正在尝试使用 FadeTransition 在 3 个不同的 AnchorPane 之间切换(点击 Button),下面是我的代码, public class TestSlide extends A
这是我经常遇到的一个编程问题,我想知道是否存在一种数据结构,无论是在 C++ STL 中还是我可以自己实现的数据结构,它都提供了随机访问和顺序访问。 我可能需要这个的一个例子: 假设有 n 种类型的元
我的问题很简单,什么是验证数据传递给序列模型中的model.fit用于? 而且,它是否会影响模型的训练方式(通常使用验证集,例如,在模型中选择超参数,但我认为这不会发生在这里)? 我说的是可以这样传递
我有一个通用函数,它需要创建一个元组来调用一个我不知道其参数类型的函数。 像这样(除了这个例子中的 array 是由一些外部代码创建的,所以我不能直接应用该函数): Result apply(
给定以下方法... def doSomething1: Future[Int] = { ... } def doSomething2: Future[Int] = { ... } def doSome
我是一名优秀的程序员,十分优秀!