如何在grails

时间:2017-10-04 14:38:12

标签: grails callback

我正在尝试使用grails进行Web服务我有示例,一切都像文档一样工作,我遇到的问题是我在Web服务中有一个过程需要大约5分钟,我不想等待在客户端,但时间而不是网络服务在流程结束时通知我,我有关于回调的理论,但我找不到一个可以帮助我的明确例子......提前感谢。

1 个答案:

答案 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
}