123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- (function () {
- var options = {
- loadTaskMaxNum: 5
- };
- var lazyWaitQueue = new Array();
- var lazyProcessList = new Array();
-
- var lazyLoadStatus = {
- currentTaskLoadNum : 0,
- waitQueueTaskNum : 0
- };
- function addLazyTask(task) {
- lazyWaitQueue.push(task);
- lazyLoadStatus.waitQueueTaskNum++;
- lazyLoadProcess();
- }
-
- function isLoadBusy(){
- return lazyLoadStatus.currentTaskLoadNum < options.loadTaskMaxNum ? false : true;
- }
-
- function lazyLoadProcess(){
-
- while(!isLoadBusy() && lazyLoadStatus.waitQueueTaskNum > 0){
- lazyLoadStatus.currentTaskLoadNum++;
- lazyLoadStatus.waitQueueTaskNum--;
- var task = lazyWaitQueue.shift();
- lazyProcessList.push(task);
- getLazyLoadTaskData(task);
- }
- }
-
- function lazyLoadTaskDone(task){
- for(var i = 0; i< lazyProcessList.length; i++){
- if(lazyProcessList[i].id == task.id){
- lazyProcessList.splice(i,1);
- lazyLoadStatus.currentTaskLoadNum--;
- break;
- }
- }
- lazyLoadProcess();
- }
-
- function getLazyLoadTaskData(task){
- function onsuccess(data) {
- lazyLoadTaskDone(task);
- var datax = eval("(" + data + ")");
- if(datax["status"]=="1"){
- task.render(datax['data']);
- }
- }
- function onerrors(data) {
- lazyLoadTaskDone(task);
- }
- jQuery.comm.sendmessage(task.url, task.packet, onsuccess, onerrors);
- }
-
- var api = {
- config: function (opts) {
- if(!opts) return options;
- for(var key in opts) {
- options[key] = opts[key];
- }
- return this;
- },
- addTask: function (id, url, packet, render) {
- var task = {
- id: id,
- url: url,
- packet: packet,
- render: render
- };
- addLazyTask(task);
- return this;
- },
- resetQueue: function () {
- lazyLoadStatus.currentTaskLoadNum = 0;
- lazyLoadStatus.waitQueueTaskNum = 0;
- lazyWaitQueue = new Array();
- lazyProcessList = new Array();
- return this;
- }
- };
- this.lazyload = api;
- })();
|