在Grails2.3中运行异步的东西

在Grails2.3中运行异步的东西,grails,asynchronous,Grails,Asynchronous,在我的Grails服务中,有一部分方法我希望异步运行 下面是2.3.x的文档 我知道 但是,我希望在没有任何阻塞的情况下执行我的。p.get()方法块。我如何在没有任何阻碍的情况下履行承诺。我不在乎myMethod()是否返回,这是一种火与忘的方法 因此,如果您不调用.get()或.waitAll()而只是使用onComplete就可以运行任务而不阻塞当前线程 这是一个非常愚蠢的例子,我在控制台中使用它作为概念证明 import static grails.async.Promises.* de

在我的Grails服务中,有一部分方法我希望异步运行

下面是2.3.x的文档

我知道

但是,我希望在没有任何阻塞的情况下执行我的。
p.get()
方法块。我如何在没有任何阻碍的情况下履行承诺。我不在乎
myMethod()
是否返回,这是一种火与忘的方法

因此,如果您不调用
.get()
.waitAll()
而只是使用
onComplete
就可以运行任务而不阻塞当前线程

这是一个非常愚蠢的例子,我在控制台中使用它作为概念证明

import static grails.async.Promises.*
def p = task {
    // Long running task
    println 'Off to do something now ...'
    Thread.sleep(5000)
    println '... that took 5 seconds'
    return 'the result'
}

p.onError { Throwable err ->
    println "An error occured ${err.message}"
}
p.onComplete { result ->
    println "Promise returned $result"
}

println 'Just to show some output, and prove the task is running in the background.'
运行上述示例可获得以下输出:

Off to do something now ...  
Just to show some output, and prove the task is running in the background.  
... that took 5 seconds   
Promise returned the result

我不能让它工作。当我定义onError时,我总是得到以下异常。org.grails.async.factory.gpars.LoggingPoolFactory错误异步执行错误:null java.lang.NullPointerException位于org.grails.async.factory.gpars.GparsPromise$\u onError\u closure2.doCall(GparsPromise.groovy:72)位于groovyx.gpars.dataflow.DataCallback$1.run(DataCallback.java:62)位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)在java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)在java.lang.Thread.run(Thread.java:745)@wheels53找到这个NPE的解决方案了吗?。我在定义onError时也得到了同样的结果
Off to do something now ...  
Just to show some output, and prove the task is running in the background.  
... that took 5 seconds   
Promise returned the result