未来不返回任何东西
Future not returning anything
正在尝试从数据库中获取结果并return获取未来的结果集。但问题是在访问未来结果时我没有得到任何回应。
下面是代码片段:
def getAll(): Future[Iterable[Employee]] = {
Future{
fetchEmployees()
}(ec)
}
def fetchEmployees(): Iterable[Employee]={
var empList = ListBuffer[Employee]()
db.withConnection{ conn =>
val statement = conn.createStatement()
val rs = statement.executeQuery("Select * from Employee")
while (rs.next()){
println(rs.getString("EmpCode")+" "+rs.getString("FirstName")+" "+rs.getString("LastName"),rs.getString("Department"))
val emp = Employee(rs.getString("EmpCode"),rs.getString("FirstName"),rs.getString("LastName"),rs.getString("Department"))
empList.appended(emp)
}
}
empList
}
这是尝试访问 return 未来对象的地方
def findAll: Future[Iterable[EmployeeResource]] = {
println("Inside resource handler")
repository.getAll().map(iterableEmp => {
iterableEmp.foreach(emp => println(s"Name is $emp.firstName"))
iterableEmp.map(emp=>createResource(emp))
})(ec)
}
不打印任何内容。
查看 appended
方法的文档——注意术语,它不是 "append"(就像在命令中一样),而是 "appended",比如 [=24] =]如果...
def appended[B >: A](elem: B): ListBuffer[B]
A copy of this sequence with an element appended.
您的代码:
empList.appended(emp)
创建一个新的 ListBuffer,但您丢弃它的结果并且您的初始列表缓冲区从未真正被修改。 (打开 -Ywarn-value-discard
scalac 选项总是一个好主意!)
您需要使用 +=
运算符(或 addOne
方法)。
正在尝试从数据库中获取结果并return获取未来的结果集。但问题是在访问未来结果时我没有得到任何回应。
下面是代码片段:
def getAll(): Future[Iterable[Employee]] = {
Future{
fetchEmployees()
}(ec)
}
def fetchEmployees(): Iterable[Employee]={
var empList = ListBuffer[Employee]()
db.withConnection{ conn =>
val statement = conn.createStatement()
val rs = statement.executeQuery("Select * from Employee")
while (rs.next()){
println(rs.getString("EmpCode")+" "+rs.getString("FirstName")+" "+rs.getString("LastName"),rs.getString("Department"))
val emp = Employee(rs.getString("EmpCode"),rs.getString("FirstName"),rs.getString("LastName"),rs.getString("Department"))
empList.appended(emp)
}
}
empList
}
这是尝试访问 return 未来对象的地方
def findAll: Future[Iterable[EmployeeResource]] = {
println("Inside resource handler")
repository.getAll().map(iterableEmp => {
iterableEmp.foreach(emp => println(s"Name is $emp.firstName"))
iterableEmp.map(emp=>createResource(emp))
})(ec)
}
不打印任何内容。
查看 appended
方法的文档——注意术语,它不是 "append"(就像在命令中一样),而是 "appended",比如 [=24] =]如果...
def appended[B >: A](elem: B): ListBuffer[B]
A copy of this sequence with an element appended.
您的代码:
empList.appended(emp)
创建一个新的 ListBuffer,但您丢弃它的结果并且您的初始列表缓冲区从未真正被修改。 (打开 -Ywarn-value-discard
scalac 选项总是一个好主意!)
您需要使用 +=
运算符(或 addOne
方法)。