Mor*_*ive 13 grails asynchronous
在My Grails服务中,我希望异步运行一个方法的一部分.
以下是2.3.x的文档 http://grails.org/doc/2.3.0.M1/guide/async.html
我做
public class MyService {
public void myMethod() {
Promise p = task {
// Long running task
}
p.onError { Throwable err ->
println "An error occured ${err.message}"
}
p.onComplete { result ->
println "Promise returned $result"
}
// block until result is called
def result = p.get()
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我想执行我的没有任何阻止.的p.get()方法块.如何在没有任何阻塞的情况下执行promise.如果myMethod()回归我不在乎,这是一种火与忘记的方法.
Jos*_*ore 16
所以,根据文档,如果你不打电话,.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.'
Run Code Online (Sandbox Code Playgroud)
运行上面的示例为您提供以下输出:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4287 次 |
| 最近记录: |