在Grails中为长时间运行的操作向用户发送反馈?

在Grails中为长时间运行的操作向用户发送反馈?,grails,Grails,我的Grails应用程序中有一个长时间运行的操作。我的第一个解决方案就是在控制器中执行操作,让用户等待操作完成。这不是一个可接受的解决方案,我想向用户显示操作的进度。进展只是文字。该操作可能需要10秒到大约30分钟 如何向用户显示长时间运行操作的进度 你能确定你的进展情况吗?比如说百分比? 我将把长操作创建为quarz作业(后台),并通过ajax查询作业/长时间运行进度的状态 你能确定你的进展情况吗?比如说百分比? 我将把长操作创建为quarz作业(后台),并通过ajax查询作业/长时间运行进度

我的Grails应用程序中有一个长时间运行的操作。我的第一个解决方案就是在控制器中执行操作,让用户等待操作完成。这不是一个可接受的解决方案,我想向用户显示操作的进度。进展只是文字。该操作可能需要10秒到大约30分钟


如何向用户显示长时间运行操作的进度

你能确定你的进展情况吗?比如说百分比?
我将把长操作创建为quarz作业(后台),并通过ajax查询作业/长时间运行进度的状态

你能确定你的进展情况吗?比如说百分比?
我将把长操作创建为quarz作业(后台),并通过ajax查询作业/长时间运行进度的状态

您将需要类似于任务或作业域类的内容,其中包含字段percentageComplete。控制器将创建并保存任务或作业,然后生成一个新线程来执行它。可能将执行代码放在服务中

当任务或作业完成其任务时,更新其percentageComplete字段将取决于您的执行代码。然后,您可以轮询作业(通过ajax)以查看作业的进展情况


注意:确定完成的百分比在很大程度上取决于您的特定代码。你可能需要根据你所掌握的知识做出最好的猜测。即使对于一个很明显如何确定完成百分比的操作(如文件下载),也不确定(网络问题等)

您将需要一个类似于任务或作业域类的字段percentageComplete。控制器将创建并保存任务或作业,然后生成一个新线程来执行它。可能将执行代码放在服务中

当任务或作业完成其任务时,更新其percentageComplete字段将取决于您的执行代码。然后,您可以轮询作业(通过ajax)以查看作业的进展情况


注意:确定完成的百分比在很大程度上取决于您的特定代码。你可能需要根据你所掌握的知识做出最好的猜测。即使对于一个很明显如何确定完成百分比的操作(如文件下载),也不确定(网络问题等)

可能会有帮助,但我从未尝试过…

可能会有帮助,但我从未尝试过…

首先,您可能想尝试,以便可以在后台运行作业。这很有效


那么我想你有两个选择。让浏览器通过Ajax轮询服务器进行更新(提姆指出JPrimePuxin会为你做这样的事情)或者得到更多的出血边缘,并考虑一种服务器推送方法。WebWorkers在中不可用。首先,您可能希望尝试,以便可以在后台运行作业。这很有效


那么我想你有两个选择。让浏览器通过Ajax轮询服务器进行更新(提姆指出JPrimePuxin会为你做这样的事情)或者得到更多的出血边缘,并考虑一种服务器推送方法。WebWorkers在inNo上不可用,我只获得了进度的文本日志。我没有任何百分比。基本上我想向用户显示这个文本日志。我想我需要使用一个单独的线程和一个远程Ajax函数。但我不知道这样做的整个过程。我可能错了,但我认为在这里使用quartz作业不合适。不,我只得到了进度的文本日志。我没有任何百分比。基本上我想向用户显示这个文本日志。我想我需要使用一个单独的线程和一个远程Ajax函数。但我不知道这样做的整个过程。我可能错了,但我认为在这里使用quartz作业不合适。