multithreading - Grails promise 未调用回调

标签 multithreading grails asynchronous promise

我无法执行应通过Promise onComplete()调用的回调。

// some service
def initiateDbLoad() {
    def p1 = task { dbLoad() }
    p1.onComplete { result ->           
        dbLoadCallback()
    }
}

def dbLoad() {
    // some long-running process here
}

def dbLoadCallback() {
    // I am never called
}

用例是我想在一个单独的线程中启动一个长时间运行的进程。调用线程应该返回,而不是等待线程完成。长时间运行的过程完成后,我希望它执行回调。这可能吗?还是应该看起来像下面的代码?
def initiateDbLoad() {
    def p1 = task {
        dbLoad()
        dbLoadCallback()
    }
}

最佳答案

onComplete仅在成功时调用。您还必须添加onError才能获取实际错误。

关于multithreading - Grails promise 未调用回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28251117/

相关文章:

Python:传递函数更多信息是一件坏事吗?

eclipse - Eclipse 中的 Grails 2.2.0 支持

hibernate - 使用Grails框架在Hibernate/Goram中加入SQL运算?

Angularjs 和流畅的页面加载

java - 如何停止 Handler Runnable?

multithreading - 为超线程创建友好的定时忙循环

android - Recycler View 在它的主框架上做太多的工作

validation - 在Grails中使用最小约束验证Double属性时接收HTTP 404

javascript - 分析通过路径列表的函数

asynchronous - 将 grunt 参数从一项任务传递到另一项任务