首页 > 其他分享 >jquery ajax queue

jquery ajax queue

时间:2023-04-16 22:36:15浏览次数:33  
标签:jquery function queue ajax isAsync mode jQuery options

// 第一个ajax请求
 
 
 
 
  $(document).queue(
  "ajaxRequests"
  , 
  function
  (){ 
 
 
 
 
  
  //全局变量,储存第一个ajax请求数据 
 
 
 
 
  
  var
   
  a_data; 
 
 
 
 
  
  $.ajax({ 
 
 
 
 
  
  success: 
  function
  (data){ 
 
 
 
 
  
  a_data = data; 
 
 
 
 
  
  $(document).dequeue(
  "myName"
  ); 
 
 
 
 
  
  } 
 
 
 
 
  
  }); 
 
 
 

  });
 
 
 

  // 第二个ajax请求
 
 
 
 
  $(document).queue(
  "ajaxRequests"
  , 
  function
  () { 
 
 
 
 
  
  $.ajax({ 
 
 
 
 
  
  success: 
  function
  (data) { 
 
 
 
 
  
  alert(a_data); 
 
 
 
 
  
  $(document).dequeue(
  "myName"
  ); 
 
 
 
 
  
  } 
 
 
 
 
  
  }); 
 
 
 

  });
 
 
 

  // 触发queue往下执行
 
 
 
 
  $(document).dequeue(
  "ajaxRequests"
  ) 
 
 
 

   
 
 
 

  =================================
 
 
 

  (function ($) { 
  
var jqXhr = {}, 
  
ajaxRequest = {}; 
  
$.ajaxQueue = function (settings) { 
  
var options = $.extend({ className: 'DEFEARTNAME' }, $.ajaxSettings, settings); 
  
var _complete = options.complete; 
  
$.extend(options, { 
  
complete: function () { 
  
if (_complete) 
  
_complete.apply(this, arguments); 
  
if ($(document).queue(options.className).length > 0) { 
  
$(document).dequeue(options.className); 
  
} else { 
  
ajaxRequest[options.className] = false; 
  
} 
  
} 
  
}); 
  
$(document).queue(options.className, function () { 
  
$.ajax(options); 
  
}); 
  
if ($(document).queue(options.className).length == 1 && !ajaxRequest[options.className]) { 
  
ajaxRequest[options.className] = true; 
  
$(document).dequeue(options.className); 
  
} 
  
}; 
  
$.ajaxSingle = function (settings) { 
  
var options = $.extend({ className: 'DEFEARTNAME' }, $.ajaxSettings, settings); 
  
if (jqXhr[options.className]) { 
  
jqXhr[options.className].abort(); 
  
} 
  
jqXhr[options.className] = $.ajax(options); 
  
}; 
  
})(jQuery); 
  
var ajaxSleep = (function () { 
  
var _settings = { 
  
type: 'GET', 
  
cache: false, 
  
success: function (msg) { 
  
var thtml = $('#txtContainer').html(); 
  
$('#txtContainer').html(thtml + "<br />" + msg); 
  
} 
  
}; 
  
return { 
  
get: function (seconds, mode, isAsync) { 
  
var mode = mode || 'ajax', 
  
isAsync = isAsync || false; 
  
$[mode]($.extend(_settings, { 
  
url: "ResponsePage.aspx?second=" + seconds, 
  
async: isAsync, 
  
className: 'GET' 
  
})); 
  
}, 
  
post: function (seconds, mode, isAsync) { 
  
var mode = mode || 'ajax', 
  
isAsync = isAsync || false; 
  
$[mode]($.extend(_settings, { 
  
type: 'POST', 
  
url: "PostPage.aspx", 
  
data: { second: seconds }, 
  
async: isAsync, 
  
className: 'POST' 
  
})); 
  
} 
  
}; 
  
} ()); 
  
var launch = function (settings) { 
  
$('#txtContainer').html(''); 
  
var mode = settings.mode, 
  
isAsync = settings.isAsync; 
  
ajaxSleep.get(12, mode, isAsync); 
  
ajaxSleep.get(10, mode, isAsync); 
  
ajaxSleep.get(8, mode, isAsync); 
  
ajaxSleep.post(6, mode, isAsync); 
  
ajaxSleep.post(4, mode, isAsync); 
  
ajaxSleep.post(2, mode, isAsync); 
  
} 
  
$(document).ready(function () { 
  
//第1种case 
  
$('#btnLaunchAsync').click(function () { 
  
launch({ isAsync: true }); 
  
}); 
  
//第2种case 
  
$('#btnLaunchSync').click(function () { 
  
launch({}); 
  
}); 
  
//第2种case 
  
$('#btnLaunchQueue').click(function () { 
  
launch({ mode: 'ajaxQueue', isAsync: true }); 
  
}); 
  
//第3种case 
  
$('#btnLaunchSingle').click(function () { 
  
launch({ mode: 'ajaxSingle', isAsync: true }); 
  
}); 
  
});
  
 

  ======================================================================
 
 
 

  两种ajax请求实例:
  
一,实现队列ajax请求,
  
jQuery.ajaxQueue({
  
url: "test.php",
  
success: function(html){ jQuery("ul").append(html); }
  
});
  
二,实现同步ajax请求,
  
jQuery.ajaxSync({
  
url: "test.php",
  
success: function(html){ jQuery("ul").append("<b>"+html+"</b>"); }
  
});
  
AjaxQueue队列请求js库代码
  
jQuery.ajaxQueue = function(o){
  
var _old = o.complete;
  
o.complete = function(){
  
if ( _old ) _old.apply( this, arguments );
  
jQuery.dequeue( jQuery.ajaxQueue, "ajax" );
  
};
  
jQuery([ jQuery.ajaxQueue ]).queue("ajax", function(){
  
jQuery.ajax( o );
  
});
  
};
  
AjaxQueue同步请求js库代码
  
jQuery.ajaxSync = function(o){
  
var fn = jQuery.ajaxSync.fn, data = jQuery.ajaxSync.data, pos = fn.length;
  
fn[ pos ] = {
  
error: o.error,
  
success: o.success,
  
complete: o.complete,
  
done: false
  
};
  
data[ pos ] = {
  
error: [],
  
success: [],
  
complete: []
  
};
  
o.error = function(){ data[ pos ].error = arguments; };
  
o.success = function(){ data[ pos ].success = arguments; };
  
o.complete = function(){
  
data[ pos ].complete = arguments;
  
fn[ pos ].done = true;
  
if ( pos == 0 || !fn[ pos-1 ] )
  
for ( var i = pos; i < fn.length && fn[i].done; i++ ) {
  
if ( fn[i].error ) fn[i].error.apply( jQuery, data[i].error );
  
if ( fn[i].success ) fn[i].success.apply( jQuery, data[i].success );
  
if ( fn[i].complete ) fn[i].complete.apply( jQuery, data[i].complete );
  
fn[i] = null;
  
data[i] = null;
  
}
  
};
  
return jQuery.ajax(o);
  
};

标签:jquery,function,queue,ajax,isAsync,mode,jQuery,options
From: https://blog.51cto.com/u_16071779/6193811

相关文章

  • Ajax
    Ajax一Ajax概述ajax全名asynchronousjavascriptandXML(异步JavaScript和XML)ajax不是新的编程语言,而是一种用于创建更好更快以及交互性更强的Web应用程序的技术ajax是前后台交互的能力,也就是我们客户端给服务端发送消息的工具,以及接收响应的工具ajax通过......
  • JUC之阻塞队列BlockingQueue的实现原理
    1.阻塞队列首先它是一个队列,是队列就会遵循先进先出(FIFO)的原则,又因为它是阻塞的,故与普通的队列有两点区别:A.当一个线程向队列里面添加数据时,如果队列是满的,那么将阻塞该线程,暂停添加数据。B.当一个线程从队列里面取出数据时,如果队列是空的,那么将阻塞该线程,暂停取出数据。2......
  • jquery实现 距今天数
    //计算与2018年3月25日的时间差vardate1=newDate("2018-03-2500:00:00");vardate2=newDate();vardate3=date2.getTime()-date1.getTime();//时间差的毫秒数//网站已稳定运行xx天xx小时vardays=Math.floor(date3......
  • ajax面试题总结
    转载请注明出处:1.ajax异步和同步的区别Ajax是一种基于JavaScript语言和XMLHttpRequest对象的异步数据传输技术,通过它可以使不用刷新整个页面的情况下,对页面进行部分更新。同步和异步是指客户端发送请求时,主线程是否会阻塞等待服务器的响应返回。同步请求在发送请......
  • STL容器之queue
    是什么循环队列,FIFO先进先出怎么用初始化//C11deque<int>deq{1,2,3,4,5};//拷贝构造,可以拷贝dequequeue<int>que(deq);//100个5queue<int>que2(100,5);//运算符重载que2=que;操作//队尾添加元素(这里只有一个出入口,就无所谓前后了也不用什么push_ba......
  • ajax使用回调函数的例子(原生代码和jquery代码)
    ajax使用回调函数的例子(原生代码和jquery代码)一、 ajax代码存在的问题(异步交互的问题)ajax所请求的url,如果因为网络等问题,很久没有回应,则给用户造成“假死”的现象。代码如下:xmlHttp=GetXmlHttpObject();xmlHttp.open();xmlHttp.send();//下面这句,会一直等待,直到有返回值......
  • Ajax_中文乱码总结
    1.发送路径中的参数有中文,在服务器段接收参数值是乱码解决办法:前端(客户端)两次编码,后端(服务器)一次解码!前端:varurl="index.jsp?test=来自前台我不是乱码";url=encodeURI(url);url=encodeURI(url);//两次编码XMLHTTP.open("post",url,true);后端:Stringname=arg0.getParameter......
  • org.apache.flume.ChannelFullException: Space for commit to queue couldn't be acq
    做以下修改agent.channels.memoryChanne3.keep-alive=60agent.channels.memoryChanne3.capacity=1000000修改java最大内存大小vibin/flume-ngJAVA_OPTS="-Xmx2048m"参考http://fangjian0423.github.io/2016/01/19/flume-channel-full-exception/......
  • cannot obtain exclusive access to locked queue 未解决
    场景安装版本:3.7.4Consumers下已经没有了消费者知识扩展exclusive:创建一个只有自己可见的队列,即不允许其它用户访问,RabbitMQ允许你将一个Queue声明成为排他性的true:排他false:不排他特点:1.声明了exclusive属性的队列只对首次声明它的连接可见,并且在连接断开时自动删除2.针对......
  • 从ajax到跨域引发的相关面试题总结
    转载请注明出处:1.ajax异步和同步的区别Ajax是一种基于JavaScript语言和XMLHttpRequest对象的异步数据传输技术,通过它可以使不用刷新整个页面的情况下,对页面进行部分更新。同步和异步是指客户端发送请求时,主线程是否会阻塞等待服务器的响应返回。同步请求在发送请......