最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于多個Ajax請求執(zhí)行返回先后的問題示例探討

 更新時間:2014年07月18日 11:25:19   投稿:whsnow  
這篇文章主要與大家探討下關(guān)于多個Ajax請求執(zhí)行返回先后的問題,需要的朋友可以參考下

有時候在一個業(yè)務(wù)事件處理流程上,可能會遇到點擊了一個按鈕或者其他事件觸發(fā)了一個動作

需要執(zhí)行兩個以上的Ajax請求,但是可能要顧慮到Ajax請求執(zhí)行的先后順序,有時候Ajax請求順序出問題,會導(dǎo)致各種問題

例如現(xiàn)在有兩個ajax事件,分別為ajax1 ,ajax2

一個叫做main的方法調(diào)用執(zhí)行入口

1.

function main(){
ajax1(data,callback);
ajax2(data,callback);
}

如果我們按照上面的方法去執(zhí)行,表面上看似乎是讓ajax1先執(zhí)行,ajax2后執(zhí)行。如果不仔細(xì)想,有些人會認(rèn)為ajax1先執(zhí)行完,之后才會執(zhí)行ajax2.事實上真的會如此嗎?

答案是 不一定 。當(dāng)然對于有多個ajax請求對執(zhí)行返回順序沒要求的情況,我們不需要過多考慮誰先執(zhí)行,誰先返回的
那要是考慮ajax事件執(zhí)行先后順序以及返回順序呢

要是這樣那怎么解決ajax事件的執(zhí)行返回先后順序呢

當(dāng)然現(xiàn)在你應(yīng)該會想到ajax回調(diào)函數(shù),Good,這是一個好主意
現(xiàn)在按這種思路改變一下方法,方法如下

function main(){
ajax1( data , ajax2( ) );
}

這樣看起來,你是不是覺得Very Good呢?真的嗎?真的是Very Good嗎?

Maybe,But in some case ,這樣寫可能有些不方便,當(dāng)然也許你可能不會遇到,但是我遇到了一種比較特殊的情況
比如下面這種可能

function main(){
aa(data);
ajax1(data,callback);
}

function aa(val){
var data=val+"";//這里是對傳入數(shù)據(jù)進行修改,封裝,當(dāng)然這里是隨便寫的
ajax2(data,ajax2Callback);
}

function ajax2Callback(){
console.log("=====回調(diào)函數(shù)ajax2Callback()執(zhí)行========");
console.log("=====這里正在執(zhí)行ajax執(zhí)行完畢后必須執(zhí)行的操作========");
}

你認(rèn)為這種情況可以滿足ajax2在ajax1先執(zhí)行并且先執(zhí)行完畢嗎

仔細(xì)想想你會發(fā)現(xiàn)得到答案

No!
Now ,How to solve this proplem . How to make sure ajax2 finished before ajax1 .

當(dāng)然,你可能會說,這不簡單,把ajax1的調(diào)用放進ajax2方法回調(diào)方法ajax2Callback的最后面

不得不承認(rèn)這是一種解決方案,但是如果是一個很古老的項目,已經(jīng)做了好幾年的項目了。里面調(diào)用復(fù)雜,要盡量去避免修改以前的底層方法,也許你為了修改這個bug,就這樣簡單解決了,你可能又會創(chuàng)造多個bug.

那到底還有沒有好的方法去解決了?

Sure,solve it easy .但是工作經(jīng)驗不足的人很少會一下想到,只會用前面的辦法草草解決問題,不管三七二十一。

而我采用了一種比較笨的方法,而且還存在一定問題,使用了setTimeOut定時器執(zhí)行一次,但是問題想必大家都知道,誰知道這個Ajax會執(zhí)行多久了,還好有大神指導(dǎo)了下我,
還記得對數(shù)組排序嗎,說道這個,也許你會好奇,這與數(shù)組排序有啥關(guān)系。下面會告訴你答案

代碼說明一切:

function main(){
var temp=ajax2Callback;
ajax2Callback=function(){
temp();
ajax1(data,callback);
}
aa(data);
ajax2Callback=temp; 
}

function aa(val){
var data=val+"";//這里是對傳入數(shù)據(jù)進行修改,封裝,當(dāng)然這里是隨便寫的
ajax2(data,ajax2Callback);
}

function ajax2Callback(){
console.log("=====回調(diào)函數(shù)ajax2Callback()執(zhí)行========");
console.log("=====這里正在執(zhí)行ajax執(zhí)行完畢后必須執(zhí)行的操作========");
}

看出來沒,是不是很有趣,沒有修改最低層的方法,僅僅修改了main方法,是不是很像數(shù)組排序里的當(dāng)我們比較兩個值大小時,不管你用冒泡排序,還是快速排序,是不是都設(shè)置了一個臨時變量去存儲值。當(dāng)然排序比較大小時,你可以沒必要設(shè)置臨時變量,僅僅用一個^運算符去做賦值比大小,甚至你可以偷懶到直接調(diào)用系統(tǒng)的Arrays.sort()方法,當(dāng)然這都可以

function changeSearchContactType(obj)
{
if (!obj)
{
return;
}

var contactType = obj.value;

var origRenderTemplate = renderTemplate;
renderTemplate = function(data)
{
origRenderTemplate(data);
ajaxAnywhere.submitAJAX('setSearchContactType');
}
var result = TemplateHelper.changeSearchContactTemplate(contactType, contactUIUID);
renderTemplate = origRenderTemplate;
return result;
}

相關(guān)文章

  • JavaScript實現(xiàn)Ajax總結(jié)

    JavaScript實現(xiàn)Ajax總結(jié)

    ajax應(yīng)用非常普及,ajax的優(yōu)點大家都知道,具體就不多說了,其缺點還真不少,比如破壞瀏覽器的back功能,同一個url打開的界面并不是完全相同,還有安全性能等方面,至于有這么多的缺點,也阻止不了大家使用ajax的步伐,下文給大家分享javascript實現(xiàn)ajax小結(jié)吧
    2015-10-10
  • Ajax異步請求的五個步驟及實戰(zhàn)案例

    Ajax異步請求的五個步驟及實戰(zhàn)案例

    通過在后臺與服務(wù)器進行少量數(shù)據(jù)交換,Ajax可以使網(wǎng)頁實現(xiàn)異步更新,下面這篇文章主要給大家介紹了關(guān)于Ajax異步請求的五個步驟及實戰(zhàn)案例的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • AJAX 圖片展示框架56個 提升開發(fā)效率

    AJAX 圖片展示框架56個 提升開發(fā)效率

    隨著Lightbox和image Gallery的廣泛應(yīng)用,目前基于異步刷新技術(shù)動態(tài)展示圖片的框架已經(jīng)是百家爭鳴,在這里我收集匯總了56個比較通用的框架,與大家分享!
    2009-08-08
  • 提交表單最簡單的AJAX程序分享

    提交表單最簡單的AJAX程序分享

    提交表單的方法有很多,而最簡單的AJAX程序就屬本文了,個人感覺還不錯,喜歡的朋友可以學(xué)習(xí)下
    2013-09-09
  • Jquery Ajax請求文件下載操作失敗的原因分析及解決辦法

    Jquery Ajax請求文件下載操作失敗的原因分析及解決辦法

    jQuery確實是一個挺好的輕量級的JS框架,能幫助我們快速的開發(fā)JS應(yīng)用,并在一定程度上改變了我們寫JavaScript代碼的習(xí)慣,本文重點給大家介紹Jquery Ajax請求文件下載操作失敗的原因分析及解決辦法,對ajax請求失敗的原因分析感興趣的朋友一起學(xué)習(xí)把
    2015-11-11
  • AJAX 二級級聯(lián)菜單實現(xiàn)代碼

    AJAX 二級級聯(lián)菜單實現(xiàn)代碼

    AJAX實現(xiàn)二級級聯(lián)菜單,用PHP完成
    2009-11-11
  • ajax中文亂碼問題解決方案

    ajax中文亂碼問題解決方案

    ajax中文亂碼問題在中文中經(jīng)常會出現(xiàn)這種問題,其實只要稍加注意就不會出現(xiàn)ajax中文亂碼這回事情了,接下來為大家詳細(xì)介紹下如何解決這類問題
    2013-04-04
  • 基于AJAX的分頁類實現(xiàn)代碼

    基于AJAX的分頁類實現(xiàn)代碼

    隨著AJAX在互聯(lián)網(wǎng)上的廣泛運用,公司也在越來越多的項目里涉及到了AJAX,最近一段時間空閑,于是就用JS寫了一個基于AJAX的異步分頁類。先不多說,還是先將源碼貼出,再進行說明~~~
    2009-09-09
  • 什么是Ajax

    什么是Ajax

    ajax不是一種語言,而是多種技術(shù)組合在一起使用,ajax只是這幾種技術(shù)組合的代名詞
    2010-10-10
  • 比較Ajax的三種實現(xiàn)及JSON解析

    比較Ajax的三種實現(xiàn)及JSON解析

    本文給大家介紹ajax的三種實現(xiàn)及json解析的相關(guān)資料,對本文感興趣的朋友參考下
    2015-12-12

最新評論

松阳县| 利辛县| 神农架林区| 西安市| 湖南省| 乌什县| 孝感市| 图们市| 临武县| 嫩江县| 小金县| 佛坪县| 商都县| 阳曲县| 崇文区| 虹口区| 徐水县| 新丰县| 通江县| 荔浦县| 吉首市| 兴海县| 台东县| 祁东县| 富宁县| 福安市| 灌南县| 子长县| 江安县| 准格尔旗| 酉阳| 奉节县| 沈阳市| 新邵县| 鄯善县| 屏边| 汉寿县| 泰安市| 怀来县| 德阳市| 乌苏市|