婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > 關(guān)于多個(gè)Ajax請(qǐng)求執(zhí)行返回先后的問(wèn)題示例探討

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

熱門標(biāo)簽:上海浦東百度地圖標(biāo)注中心注冊(cè) 百靈鳥(niǎo) 青海醫(yī)療智能外呼系統(tǒng)怎么樣 目標(biāo)三維地圖標(biāo)注 徐州電銷卡外呼系統(tǒng)供應(yīng)商 科智聯(lián)智能電銷機(jī)器人 老虎郵局地圖標(biāo)注點(diǎn) 襄陽(yáng)外呼系統(tǒng)接口 外呼系統(tǒng)獲取客戶手機(jī)號(hào)

有時(shí)候在一個(gè)業(yè)務(wù)事件處理流程上,可能會(huì)遇到點(diǎn)擊了一個(gè)按鈕或者其他事件觸發(fā)了一個(gè)動(dòng)作

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

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

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

1.

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

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

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

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

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

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

這樣看起來(lái),你是不是覺(jué)得Very Good呢?真的嗎?真的是Very Good嗎?

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

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

function aa(val){
var data=val+"";//這里是對(duì)傳入數(shù)據(jù)進(jìn)行修改,封裝,當(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ì)想想你會(huì)發(fā)現(xiàn)得到答案

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

當(dāng)然,你可能會(huì)說(shuō),這不簡(jiǎn)單,把a(bǔ)jax1的調(diào)用放進(jìn)ajax2方法回調(diào)方法ajax2Callback的最后面

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

那到底還有沒(méi)有好的方法去解決了?

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

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

代碼說(shuō)明一切:

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

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

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

看出來(lái)沒(méi),是不是很有趣,沒(méi)有修改最低層的方法,僅僅修改了main方法,是不是很像數(shù)組排序里的當(dāng)我們比較兩個(gè)值大小時(shí),不管你用冒泡排序,還是快速排序,是不是都設(shè)置了一個(gè)臨時(shí)變量去存儲(chǔ)值。當(dāng)然排序比較大小時(shí),你可以沒(méi)必要設(shè)置臨時(shí)變量,僅僅用一個(gè)^運(yùn)算符去做賦值比大小,甚至你可以偷懶到直接調(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;
}

標(biāo)簽:佛山 紅河 咸寧 股票 荊州 辛集 商洛 揭陽(yáng)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《關(guān)于多個(gè)Ajax請(qǐng)求執(zhí)行返回先后的問(wèn)題示例探討》,本文關(guān)鍵詞  關(guān)于,多個(gè),Ajax,請(qǐng)求,執(zhí)行,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《關(guān)于多個(gè)Ajax請(qǐng)求執(zhí)行返回先后的問(wèn)題示例探討》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于關(guān)于多個(gè)Ajax請(qǐng)求執(zhí)行返回先后的問(wèn)題示例探討的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 化隆| 平昌县| 河南省| 佛冈县| 登封市| 沂南县| 自贡市| 嘉祥县| 永寿县| 遂宁市| 辰溪县| 丰县| 格尔木市| 乳山市| 汕尾市| 康定县| 汤原县| 株洲市| 沧州市| 新乡县| 长垣县| 屏山县| 确山县| 闻喜县| 大安市| 蓬安县| 新乡市| 安平县| 望都县| 汉源县| 黎城县| 镇巴县| 温州市| 元阳县| 阿尔山市| 虎林市| 汝阳县| 德庆县| 宣恩县| 青浦区| 全州县|