gpt4 book ai didi

grails - 呈现页面grails 3.1之后运行方法async

转载 作者:行者123 更新时间:2023-12-02 14:48:59 25 4
gpt4 key购买 nike

在My Grails服务中,我想在Promise或某些方法异步运行时呈现页面。我尝试了与文档不同的方法
https://docs.grails.org/3.1.10/guide/async.html
在调试时,我看到return渲染在promise之前运行,但是在前端,直到promise完成运行之前,它仍然不渲染任何内容。
我试图使用Promise和线程。我列出的所有内容均未达到我想要的效果。
我什至将saveOrder复制到copyOrder,以为 promise 会阻止渲染结果。还是没用。

def save(Order order) {   
def saveorder = orderService.saveOrder(order, user.id)
def copyOrder=new AppreciationOrder();
InvokerHelper.setProperties(copyOrder, saveorder.properties)

response.status = 201
Promise p = task {
checkService.checkForDuplicate(saveorder)
notificationService.newOrder(saveorder)
}
p.onComplete { result ->
println "Promise returned $result"
}
return render(view: "/controllers/order/order/_show", model: [order: copyOrder])

}

最佳答案

尝试重定向而不是渲染,例如以下假设您的保存操作来自“订单”域:

redirect( action: 'show', params: [order: copyOrder] )

您可能需要使用上面的参数,例如如果您的表演操作需要ID,则可以执行以下操作:
redirect( action: 'show', id: copyOrder.id )

我认为您的异步代码最好放在服务中,您也可以添加onError子句,例如
p.onError { Exception err ->
println "Error - $err"
}

关于grails - 呈现页面grails 3.1之后运行方法async,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43999704/

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