gpt4 book ai didi

grails - 在 Grails 2.3 中异步运行一些东西

转载 作者:行者123 更新时间:2023-12-03 23:40:58 26 4
gpt4 key购买 nike

在 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()
}
}

但是,我想在没有任何阻塞的情况下执行我的。 p.get()方法块。我如何在没有任何阻塞的情况下执行 promise 。我不在乎 myMethod()返回,它是一种火而忘记的方法。

最佳答案

所以,根据 documentation如果你不打电话.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

关于grails - 在 Grails 2.3 中异步运行一些东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25271841/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com