Code Bye

ajax 请求,后台向前台传完值(render)后,会继续执行吗

 

看如下代码。场景为:前端发起一个 ajax 请求至后端,后端接收请求,通过远程调用其他系统获取数据,然后将数据响应给前端。在这个过程中,我希望后端能将获取的数据存入本地库(saveData)。那么如果我这个saveData方法写在“后端响应给前端(render)之后,”,saveData一定会执行吗?哪怕执行耗时很长?假如前端用户已经在点击其他请求了呢?

谢谢!

       public void ajaxTest(...) {
                Object data = getData(); // 此处为以某种方式(如远程)获取数据

                saveData(data); // 此处将获得的数据入库

                renderJSON(response, data); // 将数据响应给前段 ajax 请求

                saveData(data); // 这句一定会执行吗?如果会,那么假设该句耗时较久,写在 renderJSON之后,相比写在renderJSON之前而言,更有利于前端响应速度?
        }


	/**
	 * 将JSON对象写入http响应流
	 * 
	 * @param response http响应
	 * @param obj JSON对象
	 */
	public static void renderJSON(HttpServletResponse response, Object obj) {

		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out = null;
		try {
			out = response.getWriter();
			out.print(JSONMapper.toJSON(obj).render(false));
		} catch (MapperException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (null != out) {
				out.close();
			}
		}
	}

20分
saveData(data); // 这句一定会执行

如果不依赖存储结果,这个操作又很耗时,放后面是明智的选择。


20分
renderJSON捕获了CheckedException类异常,出现此种异常及不抛出异常时都执行savedata。
但是没有捕获RuntimeException类异常,此时将跳出,不执行savedata操作。
懂了,谢谢两位!

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明ajax 请求,后台向前台传完值(render)后,会继续执行吗