我正在尝试使用grails进行Web服务我有示例,一切都像文档一样工作,我遇到的问题是我在Web服务中有一个过程需要大约5分钟,我不想等待在客户端,但时间而不是网络服务在流程结束时通知我,我有关于回调的理论,但我找不到一个可以帮助我的明确例子......提前感谢。
答案 0 :(得分:0)
有很多方法可以实现这一目标,请查看Grails' async options。
我成功使用的一种方法是Promises,这不是一种回调机制,但是它可以让你以异步方式分离工作,释放调用资源,你只需要实现一种报告错误的方法,可能会更新某些内容以显示任务已成功完成。
这是一个愚蠢的例子,但展示了基础......
class MyService {
import static java.util.concurrent.TimeUnit.*
import static grails.async.Promises.*
def doStuff() {
Promise p = task {
return runLongTask()
}
p.onError { Throwable err ->
log "Task failed ${err.message}"
// maybe add a row to an event logging DB table
}
p.onComplete { result ->
log "Task completed successfully"
// again maybe add a row to an event logging DB table & do something with result
}
}
}
def runLongTask() {
// do stuff & maybe return something
}