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

Posted wangyang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过简单的AJAX递归请求进行多任务的数据自动处理相关的知识,希望对你有一定的参考价值。

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

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


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

var data = {

'status'      : 1,

'code'        : 0,

'next_url'    : "www.xxx.com",

'info'        : '开始进行图片解压...'

};


接下来是递归方法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,用于结束递归调用。


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




以上是关于通过简单的AJAX递归请求进行多任务的数据自动处理的主要内容,如果未能解决你的问题,请参考以下文章

自动化运维Python系列之Django路由系统Ajax请求

SpringBoot项目使用多线程处理任务时无法通过@Autowired注入bean

如何用nodejs设置proxy进行https请求

Ajax

PHP多进程处理并行处理任务实例

jQuery.ajax()通过 HTTP 请求加载远程数据实力详解