当用户进行了post操作之后,后台可能会做很多的操作。
比如说,创单人录入一条工单,点击“提交”之后。后台需要将工单数据写入数据库,然后要计算工单关联关系,计算任务优先级,进行工单智能分析,进行预调度等等操作
这些操作涉及到大量的IO,以及逻辑判断,因此要耗费比较长的时间。
但是对于创单人来说,他关注的首先是这条工单创建是否成功,也就是是否能够尽快得到创建成功的反馈页面。
那么这个时候,就可以采用类似于如下伪代码的方式:
public void doPost(HttpServletRequest req, HttpServletResponse resp){
req.getInputStream();
// 从输入流中取出用户录入的工单数据
// 将工单数据写入数据库
new MyThread().start();// 这行是重点,新起线程,完成其他操作
resp.getWriter();
// 写成功响应并发送
}
这样的话,用户就可以第一时间得到基本操作的响应结果,同时另一个线程,完成其他的耗时操作,这些操作的结果,不是用户首要关注的
不过,这个方案有一个问题,在返回响应之后,一次http请求/响应就结束了。如果后续其他耗时操作完成之后,怎么把操作结果主动反馈给用户呢?
我想到一种方式,可以采取comet等服务端主动推送的方式,在其他操作完成之后,主动再把操作结果反馈给用户。
另一种方式,可以在返回响应时,给回一个javascript脚本,设定为延迟若干秒,再通过AJAX方式,用浏览器再重新发起请求,到服务端获取想要的操作结果
分享到:
相关推荐
在Android开发中,ListView是一种常用的控件,用于展示大量数据列表。然而,如果直接在ListView中加载网络图片,可能会导致性能问题,如滚动卡顿、内存泄漏等。为了解决这些问题,开发者通常会采用异步加载图片的...
因此,在某些情况下,将异步校验改为同步校验成为一种需求。本篇文档将详细介绍如何实现这一转换,并探讨其中的技术细节。 #### 二、异步校验表单的常见问题 在原有的异步校验表单的基础上,我们遇到了以下问题: ...
在Android开发中,ListView是一种常用的组件,用于展示大量的数据列表。然而,当ListView中的每个项都需要从网络加载图片时,如果不进行适当的优化,就会遇到UI阻塞问题,导致列表滚动时出现卡顿,用户体验大大降低...
重叠I/O是异步I/O的一种实现方式,它使用`OVERLAPPED`结构保存关于I/O操作的信息,包括偏移量、缓冲区指针以及一个用于同步的句柄(如事件句柄)。这个结构在I/O操作完成后,会被用来通知调用者。 ### 3. C++封装...
在提供的源码中,可能使用了上述其中一种或多种方式来实现图片异步加载。通常的步骤包括: 1. **创建后台线程**:创建一个新的线程,比如使用AsyncTask,用于执行网络请求或从本地文件系统读取图片。 2. **下载或...
AJAX(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。通常,一个AJAX请求会向服务器发送HTTP请求,服务器处理请求并返回数据,然后JavaScript处理这些数据并在页面...
"Only,:buquet:在android上,一种简单的持久化和运行块代码的方法"是一个开源项目,主要目标是为Android开发者提供一个方便的工具,用于实现代码块的持久化存储和执行。这个项目可能包含一系列类库或者框架,使得...
至于点击搜索框时显示热门搜索的逻辑,一种方法是在`handleSearchBoxClick`中设置一个状态,表示搜索建议是否可见。然后根据这个状态来决定是否渲染`HotSearchSuggestions`组件。 ```jsx const [showSuggestions, ...
在Android开发中,GridView是一种常见的布局控件,用于展示大量数据,如图片、列表项等。然而,当处理大量图片时,特别是在用户滚动时实时加载,可能会遇到内存溢出(Out Of Memory,简称OOM)的问题。这是因为...
本文主要探讨的是关于闪存存储器,特别是NAND闪存存储器的一种新的操作方式——异步多面独立读取操作(Asynchronous Multi-Plane Independent Read, AMPI)。 NAND闪存存储器通常以块为单位进行擦除操作,并按页...
入另一种详情表 问题所在: 当用户因特殊情况清除缓存 导致app 发送json串 入库并发高 导致CPU 暴增到88% 并且居高不下 优化思路: 1、异步队列处理 2、redis 过滤(就是只处理当天第一次请求) 3、redis 辅助存储...
4. **Access数据库**:Access数据库在小型应用中常见,提供了一种简单的方式来存储和管理数据。在这个聊天室项目中,Access可能用来存储用户的注册信息和聊天记录。 5. **数据访问对象(DAO)模式**:为了分离数据...
Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使网页实现异步更新,大大提升了用户体验。在日志记录场景中,...
ES6引入了一种新的语法特性——生成器(Generators),它为解决异步问题提供了全新的思路。而`async-generator`项目正是基于此,将生成器与异步操作相结合,为我们提供了更优雅的异步编程方式。 生成器是ES6中的一...
总的来说,JS异步文件分片断点上传是一种解决大文件上传问题的有效策略,它结合了前端的文件处理和后端的文件存储与状态管理,保证了上传的稳定性和效率。通过合理的分块大小和断点续传机制,即使在网络不稳定的情况...
1. **JSP (Java Server Pages)**: 是一种用于生成动态Web页面的技术。 2. **JavaScript**: 主要用于实现客户端的逻辑处理。 3. **AJAX (Asynchronous JavaScript and XML)**: 用于实现异步数据请求,提高用户体验。 ...
标题中的“网络游戏-一种游戏录像回放方法及系统”揭示了这个压缩包文件的主要内容,它涉及的是网络游戏领域中关于游戏录像回放的技术方案。在网络游戏领域,游戏录像回放功能是一个重要的组成部分,它允许玩家回顾...