亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

jQuery中借助deferred來請求及判斷AJAX加載的實例講解

2019-11-20 09:56:08
字體:
來源:轉載
供稿:網友

ajax請求異步隊列加載
我們在開發程序的時候通常會碰到使用ajax加載數據顯示到列表的情況。ajax默認使用異步加載(async:true)。為什么不使用同步呢,因為ajax同步加載會UI渲染線程阻塞的問題。通常表現為在加載大量數據時由于加載時間過長導致頁面不能點擊、gif動畫卡死以及瀏覽器崩潰等問題。所以,一般情況下,盡量使用ajax異步加載。
可是,我們有些時候的需求要求ajax同步加載,一個加載完再加載下一個,即所謂的隊列。前面我們有說過,同步加載會引起UI渲染阻塞問題。那么我們要怎么實現順序加載而不引起該問題呢?
示例代碼一:

<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script><script>$(function(){ $("#clickBtn").on("click",function(){  getData(0,10);//輸出0-9 })})function getData(i,length){ $.ajax({  type:"post",  url:"setDeffer.php",  data:{   data:i  },  async:true,//異步  success:function(data){   $("#showArea").text($("#showArea").text()+data+"/n");   if(i<length-1){    getData(i+1,length);   }  } });}</script>

PHP后臺代碼:

<?php$str = $_POST["data"];sleep(1);//延遲1秒echo "輸出".$str;?>

當然,jquery也提供了我們deferred對象來解決回調函數的問題。
示例代碼二:

<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script><script>$(function(){ $("#clickBtn").on("click",function(){  recycleData(0,10);//輸出0-9 })})function getData(i){ var defer = $.Deferred(); $.ajax({  type:"post",  url:"setDeffer.php",  data:{   data:i  },  async:true,//異步  success:function(data){   $("#showArea").text($("#showArea").text()+data+"/n");   defer.resolve(data);  } }); return defer.promise();}function recycleData(i,length){ $.when(getData(i)).done(function(data){//這里的data為defer在ajax保存下來的數據  if(i<length-1){   recycleData(i+1,length);//遞歸  } })}</script>

這里首先創建一個deffered對象,在ajax的success函數中將ajax返回的數據保存在deffered對象中,然后返回deffered對象。這樣就保證了在下一次ajax請求的時候這個ajax已經請求完成。deferred對象的好處包括它允許你給一個事件自由添加多個回調函數?;蛘呓o多個事件統一指定回調函數。

用jquery的deferred對象實現判斷頁面中所有圖片加載完成
如果我們加載的是圖片,對于圖片是否加載完成,我們平時可以用監聽圖片load 方法來進行。今天主要介紹用jquery的deferred對象來進行判斷。
關于jquery的deferred對象,是jquery的重點和難點。對于執行較長時間的函數,我們通常用deferred對象。
關于deferred對象,我在這里稍微介紹一下$.when().then()

function successFunc(){ console.log( “success!” ); } function failureFunc(){ console.log( “failure!” ); } $.when( $.ajax( "/main.php" ), $.ajax( "/modules.php" ), $.ajax( “/lists.php” ) ).then( successFunc, failureFunc ); 

可以同時調用多個ajax,然后通過then來返回成功或者失敗。

或者

$.when($.ajax("test1.html"), $.ajax("test2.html")).done(function(){ alert("哈哈,成功了!"); }).fail(function(){ alert("出錯啦!"); });

我們回到正題來,用jquery的deferred對象實現判斷頁面中所有圖片加載完成

var defereds = []; //定義一個數組存放Deferred對象$imgs.each(function() { //imgs循環所有圖片  var dfd = $.Deferred();// 新建一個deferred對象  $(this).load(dfd.resolve());// 圖片加載完成之后,改變deferred對象的執行狀態  defereds.push(dfd);//push到數組中});$.when.apply(null, defereds).done(function() {  console.log('load compeleted');});

因為 $.when 支持的參數是 $.when(dfd1, dfd2, dfd3, ...),所以我們這里使用了 apply 來接受數組參數。

上面提到了apply(),又引申到了 在JS中,call()方法和apply()方法

我在這里稍微介紹一下apply()

假如我們有prints函數:

function prints(a,b,c,d){    console.log(a+b+c+d);  }  function example(a,b,c,d){    prints.apply(this,[a,b,c,d]);  }  example("1","sd","wq","wqe") //輸出:1sdwqwqe

或者我們可以這么寫:

prints.apply(null,["腳","本","之","家"]);//輸出:武林網

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久偷看各类女兵18女厕嘘嘘| 91精品国产高清久久久久久| 国产午夜精品视频免费不卡69堂| 欧美激情2020午夜免费观看| 精品国产区一区二区三区在线观看| 91精品国产高清久久久久久| 欧美另类暴力丝袜| 日本欧美黄网站| 国产主播喷水一区二区| 在线精品国产欧美| 欧美老女人在线视频| 国产精品va在线播放我和闺蜜| 国产精品欧美日韩一区二区| 亚洲精品av在线| 国产精品视频中文字幕91| 亚洲免费视频一区二区| 欧美日韩亚洲一区二区| 欧美性xxxx极品高清hd直播| 国产精品第三页| 永久免费毛片在线播放不卡| 日韩欧美中文在线| 色综合五月天导航| 欧美最猛性xxxxx亚洲精品| 欧美午夜精品久久久久久久| 久久精品夜夜夜夜夜久久| 91av在线精品| 成人妇女免费播放久久久| 久久久免费高清电视剧观看| 精品少妇一区二区30p| 亚洲国产精品人久久电影| 欧美视频中文在线看| 欧美日韩福利在线观看| 欧美野外猛男的大粗鳮| 性色av一区二区三区| 在线亚洲国产精品网| 成人网在线观看| 亚洲精品成人免费| 精品久久久久久电影| 亚洲码在线观看| 欧美综合激情网| 亚洲激情视频网站| 国产精品久久久久不卡| 福利视频第一区| 欧美日韩国产影院| 亚洲最新中文字幕| 日韩成人在线视频观看| 日韩精品视频中文在线观看| 久久人人爽亚洲精品天堂| 日本a级片电影一区二区| 精品亚洲男同gayvideo网站| 久久久久久久久久久久久久久久久久av| 777午夜精品福利在线观看| 97在线观看视频国产| 亚洲激情自拍图| 亚洲成年人在线| 国产精品久久久久久久av大片| 亚洲国产婷婷香蕉久久久久久| 成人黄色片在线| 日本人成精品视频在线| 国语自产偷拍精品视频偷| 欧美日韩一区二区三区| 欧美激情2020午夜免费观看| 日韩一区二区在线视频| 久久久久久久999精品视频| 日韩美女av在线| 91在线观看免费高清完整版在线观看| 不卡伊人av在线播放| 亚洲激情在线观看视频免费| 亚洲第一视频在线观看| 欧美日韩色婷婷| 日韩在线观看你懂的| 91po在线观看91精品国产性色| 日韩久久精品电影| 日本成人在线视频网址| 日韩高清av一区二区三区| 成人h视频在线观看播放| 欧美午夜片欧美片在线观看| 亚洲人免费视频| 日韩在线观看av| 精品国内亚洲在观看18黄| 日韩亚洲综合在线| 亚洲精品美女久久久| 久久国产精品久久国产精品| 日韩av电影在线免费播放| 69精品小视频| 亚洲自拍欧美色图| 欧美大奶子在线| 午夜精品视频在线| 亚洲深夜福利网站| 亚洲欧美第一页| 久久国产精品偷| 亚洲色图激情小说| 日韩av成人在线| 91国产美女在线观看| 夜夜嗨av一区二区三区四区| 最近的2019中文字幕免费一页| 久久人人爽人人爽人人片亚洲| 日韩精品视频免费在线观看| 久久久之久亚州精品露出| 国产午夜精品免费一区二区三区| 国产精品尤物福利片在线观看| 国产精品久久一区主播| 色综合五月天导航| 91大神福利视频在线| 国精产品一区一区三区有限在线| 国产日韩在线亚洲字幕中文| 国产91精品不卡视频| 色琪琪综合男人的天堂aⅴ视频| 国产精品第一区| 欧美日韩在线视频首页| 精品亚洲国产视频| 亚洲精品黄网在线观看| 成年无码av片在线| 欧美成人午夜免费视在线看片| 97精品国产97久久久久久免费| 最新国产精品亚洲| 国产精品精品一区二区三区午夜版| 国产一区二区激情| 美日韩精品免费观看视频| 伊人久久大香线蕉av一区二区| 国外成人免费在线播放| 日韩小视频网址| 日韩在线播放视频| 最好看的2019的中文字幕视频| 欧美午夜激情视频| 久久97精品久久久久久久不卡| 亚洲人成在线电影| 国产精品亚洲视频在线观看| 欧洲午夜精品久久久| 91av视频在线免费观看| 91亚洲精品久久久| 欧美极品少妇xxxxx| 日本中文字幕不卡免费| 久久久国产在线视频| 91免费综合在线| 亚洲福利视频在线| 久久久久国产精品一区| 国产91精品黑色丝袜高跟鞋| 久久精品国亚洲| 久久综合久中文字幕青草| 亚洲3p在线观看| 欧美午夜xxx| 亚洲精品一区中文| 国产69精品久久久| 高清亚洲成在人网站天堂| 在线精品播放av| 狠狠躁夜夜躁久久躁别揉| 国产精品久久一区| 97在线免费观看视频| 中文字幕亚洲色图| 久久中文字幕视频| 欧美怡红院视频一区二区三区| 国产日本欧美一区| 久久97久久97精品免视看| 久久久精品免费视频| 欧美大尺度在线观看| 成人国产精品免费视频| 日韩成人av在线播放| 久久综合伊人77777尤物| 成人免费视频在线观看超级碰| 国内精品久久久久久久| 91精品视频在线| 亚洲少妇中文在线| 亚洲成人动漫在线播放|