01
Feb

通过简单的AJAX递归请求进行多任务的数据自动处理


今天在处理图片时,需要批量对图片进行压缩、加水印等操作,因为程序自动处理次数比较多,图片比较少还好,当有大量图片的时候,系统处理时间会很长,这时异步自动多次请求就是一个比较好的解决方案。


先定制个结构,JS代码如下:

var data = {
    'status'     : 1,
    'code'      : 0,
    'next_url'   : "www.xxx.com",
    'info'      : '开始进行图片解压...'
};

这即是初始化设置,也是后端返回的JSON串标准结构,重要的参数有两个,status是状态,next_url是下次请求的地址,这个是重点,服务端每个处理方法都返回下次请求地址。


接下来是递归方法recursion:

function recursion(data){
	$.ajax({
		url: data.next_url,
		dataType: "json",
		success: function (data) {
			if (data.status == 1) {
				$('.aotuinfo').append('<li class="text-info">'+ data.info +'</li>');
				//递归请求,这里调用自己
				recursion(data);
			} else {
				if(data.status == 99){
					//流程正常结束
					$('.aotuinfo').append('<li class="text-success">'+ data.info +'</li>');
					window.location.reload();
				} else {
					//出现错误终止
					$('.aotuinfo').append('<li class="text-error">'+ data.info +'</li>');                                    
				}
			}
		},
		error: function () {
		  //出现错误终止
		  $('.aotuinfo').append('<li class="text-error">服务器出错!</li>');
		}
	});
}


简言之,通过不断调用自身进行不间断请求,直到所有任务处理完毕。后端代码最后的任务处理成功后返回status=99,用于结束递归调用。


以上就是最简单的实现,也可以在后端任务中加入分页处理,适配大量数据处理等等,灵活加入各种任务进行数据的批量处理。


About Me

Nothing is impossible!

Friends
倩倩的网站儿子的网站丽丽
CATEGORIES
Tags
ChatGPT四舍五入GOBeatles想像冰雪奇缘北京编程SSL证书认知障碍Docker春天行政区域名列表域名体系nginxopen_basedir思维指令编程语言程序URL网站上线域名FTP云服务器搜索引擎JSCSS网页超链接聚合内容列表元素网页构成网站的构成网站的分类网站单标签HTML第一个网页简单网页博域科技2018香山春游AJAX字体
Copyright©2022 王阳 版权所有  京ICP备14005672号-6