`

一种异步保存的思路

阅读更多
当用户进行了post操作之后,后台可能会做很多的操作。

比如说,创单人录入一条工单,点击“提交”之后。后台需要将工单数据写入数据库,然后要计算工单关联关系,计算任务优先级,进行工单智能分析,进行预调度等等操作

这些操作涉及到大量的IO,以及逻辑判断,因此要耗费比较长的时间。

但是对于创单人来说,他关注的首先是这条工单创建是否成功,也就是是否能够尽快得到创建成功的反馈页面。

那么这个时候,就可以采用类似于如下伪代码的方式:
public void doPost(HttpServletRequest req, HttpServletResponse resp){

    req.getInputStream();
    // 从输入流中取出用户录入的工单数据
    // 将工单数据写入数据库
    
    new MyThread().start();// 这行是重点,新起线程,完成其他操作

    resp.getWriter();
    // 写成功响应并发送

}

这样的话,用户就可以第一时间得到基本操作的响应结果,同时另一个线程,完成其他的耗时操作,这些操作的结果,不是用户首要关注的

不过,这个方案有一个问题,在返回响应之后,一次http请求/响应就结束了。如果后续其他耗时操作完成之后,怎么把操作结果主动反馈给用户呢?

我想到一种方式,可以采取comet等服务端主动推送的方式,在其他操作完成之后,主动再把操作结果反馈给用户。

另一种方式,可以在返回响应时,给回一个javascript脚本,设定为延迟若干秒,再通过AJAX方式,用浏览器再重新发起请求,到服务端获取想要的操作结果
分享到:
评论

相关推荐

    listview异步加载图片

    在Android开发中,ListView是一种常用的控件,用于展示大量数据列表。然而,如果直接在ListView中加载网络图片,可能会导致性能问题,如滚动卡顿、内存泄漏等。为了解决这些问题,开发者通常会采用异步加载图片的...

    javascript将异步校验表单改写为同步表单.docx

    因此,在某些情况下,将异步校验改为同步校验成为一种需求。本篇文档将详细介绍如何实现这一转换,并探讨其中的技术细节。 #### 二、异步校验表单的常见问题 在原有的异步校验表单的基础上,我们遇到了以下问题: ...

    android ListView异步加载图片示例

    在Android开发中,ListView是一种常用的组件,用于展示大量的数据列表。然而,当ListView中的每个项都需要从网络加载图片时,如果不进行适当的优化,就会遇到UI阻塞问题,导致列表滚动时出现卡顿,用户体验大大降低...

    c++异步重叠完成例程io封装

    重叠I/O是异步I/O的一种实现方式,它使用`OVERLAPPED`结构保存关于I/O操作的信息,包括偏移量、缓冲区指针以及一个用于同步的句柄(如事件句柄)。这个结构在I/O操作完成后,会被用来通知调用者。 ### 3. C++封装...

    Android应用源码之listview实现图片的异步加载.zip

    在提供的源码中,可能使用了上述其中一种或多种方式来实现图片异步加载。通常的步骤包括: 1. **创建后台线程**:创建一个新的线程,比如使用AsyncTask,用于执行网络请求或从本地文件系统读取图片。 2. **下载或...

    使用php方法curl抓取AJAX异步内容思路分析及代码分享

    AJAX(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。通常,一个AJAX请求会向服务器发送HTTP请求,服务器处理请求并返回数据,然后JavaScript处理这些数据并在页面...

    Only,:buquet:在android上,一种简单的持久化和运行块代码的方法。.zip

    "Only,:buquet:在android上,一种简单的持久化和运行块代码的方法"是一个开源项目,主要目标是为Android开发者提供一个方便的工具,用于实现代码块的持久化存储和执行。这个项目可能包含一系列类库或者框架,使得...

    点击搜索框弹出热门搜索以及点击缓一缓 实现换一批热门关键词的实现思路以及代码 .zip

    至于点击搜索框时显示热门搜索的逻辑,一种方法是在`handleSearchBoxClick`中设置一个状态,表示搜索建议是否可见。然后根据这个状态来决定是否渲染`HotSearchSuggestions`组件。 ```jsx const [showSuggestions, ...

    Android完美解决GridView异步加载图片和加载大量图片时出现Out Of Memory问题

    在Android开发中,GridView是一种常见的布局控件,用于展示大量数据,如图片、列表项等。然而,当处理大量图片时,特别是在用户滚动时实时加载,可能会遇到内存溢出(Out Of Memory,简称OOM)的问题。这是因为...

    存储器器件及其异步多面独立读取操作的制作方法.docx

    本文主要探讨的是关于闪存存储器,特别是NAND闪存存储器的一种新的操作方式——异步多面独立读取操作(Asynchronous Multi-Plane Independent Read, AMPI)。 NAND闪存存储器通常以块为单位进行擦除操作,并按页...

    异步redis队列实现 数据入库的方法

    入另一种详情表 问题所在: 当用户因特殊情况清除缓存 导致app 发送json串 入库并发高 导致CPU 暴增到88% 并且居高不下 优化思路: 1、异步队列处理 2、redis 过滤(就是只处理当天第一次请求) 3、redis 辅助存储...

    jsp+access聊天室(包括设计思路)

    4. **Access数据库**:Access数据库在小型应用中常见,提供了一种简单的方式来存储和管理数据。在这个聊天室项目中,Access可能用来存储用户的注册信息和聊天记录。 5. **数据访问对象(DAO)模式**:为了分离数据...

    基于Ajax的日志自动保存程序

    Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使网页实现异步更新,大大提升了用户体验。在日志记录场景中,...

    async-generator:测试 ES6 生成器和异步

    ES6引入了一种新的语法特性——生成器(Generators),它为解决异步问题提供了全新的思路。而`async-generator`项目正是基于此,将生成器与异步操作相结合,为我们提供了更优雅的异步编程方式。 生成器是ES6中的一...

    JS异步文件分片断点上传的实现思路

    总的来说,JS异步文件分片断点上传是一种解决大文件上传问题的有效策略,它结合了前端的文件处理和后端的文件存储与状态管理,保证了上传的稳定性和效率。通过合理的分块大小和断点续传机制,即使在网络不稳定的情况...

    js翻页复选框状态保存

    1. **JSP (Java Server Pages)**: 是一种用于生成动态Web页面的技术。 2. **JavaScript**: 主要用于实现客户端的逻辑处理。 3. **AJAX (Asynchronous JavaScript and XML)**: 用于实现异步数据请求,提高用户体验。 ...

    网络游戏-一种游戏录像回放方法及系统.zip

    标题中的“网络游戏-一种游戏录像回放方法及系统”揭示了这个压缩包文件的主要内容,它涉及的是网络游戏领域中关于游戏录像回放的技术方案。在网络游戏领域,游戏录像回放功能是一个重要的组成部分,它允许玩家回顾...

Global site tag (gtag.js) - Google Analytics