多次异步请求队列实现

对于多次异步请求且还要按照指定的顺序分布请求之前一直比较困扰的一个难题;前段时间在网上看到一个好方法;绝妙了。简单直接实用。

话不多说,上代码。

var ids = [{id:id1,url:url1}, {id:id2,url:url2}, {id:id2,url:url2}];//需要请求的参数以及url,按顺序排列

(function sendRequest(){

var id = ids.shift();//提取首个请求

 if(id){

 $.ajax({url: "/get", data: {id}}).always(function(){

         //do sth.

console.log("finished");
            sendRequest();//递归调用

 });

 }
else {

 console.log("finished");

  }
})();

该方法精妙的地方在于通过递归调用,免去重复创建多个请求方法。通过shift逐个请求。

时间: 2025-01-02 02:55:32

多次异步请求队列实现的相关文章

iOS网络编程之同步、异步、请求队列 2014-12-7

1. 同步意为着线程阻塞,在主线程中使用此方法会不响应任何用户事件.所以,在应用程序设计时,大多被用在专门的子线程增加用户体验,或用异步请求代替. - (IBAction)grabURL:(id)sender { NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"]; ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; [request star

ASIHTTPRequest取消异步请求

今天碰到一个问题 异步请求等待中 cancel后会发生什么,网上找了下资料说取消的请求默认都会按请求失败处理,并调用请求失败delegate 查找到的资料具体解释了下ASIHTTPRequest取消异步请求 首先,同步请求是不能取消的.其次,不管是队列请求,还是简单的异步请求,全部调用[ request cancel ]来取消请求. 取消的请求默认都会按请求失败处理,并调用请求失败delegate.如果不想调用delegate方法,则设置:[ request clearDelegatesAndC

解决多次异步请求紊乱问题 - JavaScript

加入目前的需求这样的:       左边的菜单链接,点击后通过异步请求返回其HTML代码,然后innerHTML到右面的DIV中,加入切换菜单的速度非常快,最终会导致请求紊乱. 可以加入消息管理机制,下面一个例子,代码没有优化,只提供思路.?1. [代码][JavaScript]代码     // 在DOMready的时候创建一个消息管理器messageMgr,包含一个队列(Queue),增(Create).删(Remove).判断(isAvailable)函数.//给每个module设置一个A

Servlet 3.0笔记之异步请求Comet推送iFrame示范

Servlet3规范提出异步请求,绝对是一巨大历史进步.之前各自应用服务器厂商纷纷推出自己的异步请求实现(或者称comet,或者服务器推送支持,或者长连接),诸如Tomcat6中的NIO连接协议支持,Jetty的continuations编程架构,SUN.IBM.BEA等自不用说,商业版的服务器对Comet的支持,自然走在开源应用服务器前面,各自为王,没有一个统一的编程模型,怎一个乱字了得.相关的comet框架也不少,诸如pushlet.DWR.cometd;最近很热HTML5也不甘寂寞,推出W

OkHttp面试之--OkHttp的整个异步请求流程

通过上一节,我们已经了解了如何使用OkHttp发送异步请求,下载网络图片信息并显示到ImageView控件上,从这一节开始我们就来开始研究一下其内部的实现流程和原理.因为整个流程相对而言还是比较复杂,因此对于流程的分析我划分成以下几个章节去介绍 流程概述 拦截器的原理 HttpEngine中sendRequest的流程分析 HttpEngine中readResponse的流程分析 这一节我们先来看一下整个流程的概述,先上一张时序图 以上图片来自http://www.jianshu.com/p/d

Swift3.0:Get/Post同步和异步请求

一.介绍 Get和Post区别: Get是从服务器上获取数据,Post是向服务器发送数据. 对于Get方式,服务端用Request.QueryString获取变量的值,对于Post方式,服务端用Request.From获取提交的数据. Get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内的各个字段一一对应. Post是通过HTTP Post机制,将表单内各个字段和其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址.用户看不到这个过程. Get

数据下载-block 形式的异步请求

这里给大家写了一个方法 ,我们使用block 进行数据异步下载 //block 形式的异步请求 -(void)asyncDownloadWithBlock{ //菊花 [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; //将字符串转化成URL 地址 NSURL *url = [NSURL URLWithString:self.myURLStr]; //创建一个对象 NSURLRequest *requ

ASIHTTP 框架,同步、 异步请求、 上传 、 下载

ASIHTTPRequest详解 ASIHTTPRequest 是一款极其强劲的 HTTP 访问开源项目.让简单的 API 完成复杂的功能,如:异步请求,队列请求,GZIP 压缩,缓存,断点续传,进度跟踪,上传文件,HTTP 认证.在新的版本中,还加入了 Objective-C 闭包 Block 的支持,让我们的代码加轻简灵活. 下面就举例说明它的 API 用法. 发起一个同步请求 同步意为着线程阻塞,在主线程中使用此方法会使应用Hang住而不响应任何用户事件.所以,在应用程序设计时,大多被用在

数据下载 - delegate 形式的异步请求

下载数据可以使用同步请求,异步请求 之前有讲到NSString . NSData 类型的同步请求 有NSURLConnection 形式的同步请求 异步请求有block 形式的异步请求,我们需要创建一个队列 在block 内部实现 但是我们最常用的是 delegate 形式的异步请求 #import "ViewController.h" @interface ViewController ()<NSURLConnectionDataDelegate> @property(n