2017-10-04 17 views
-1

我正在尝试在grails中完成web服务休息我有例子,一切都像文档一样工作,我遇到的问题是我在web服务中有一个过程需要大约5分钟,我不想在客户端等待,但时间,而不是在过程完成时,Web服务通知我,我有关于回调的理论,但我找不到一个明确的例子,可以帮助我......谢谢提前。如何在grails中创建web服务回调

+0

为什么过程需要5分钟的原因是什么? – user615274

回答

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 
}