比如我要渲染一個(gè)詳情頁面但是里面有些下拉列表的數(shù)據(jù)也是動(dòng)態(tài)渲染的那肯定要先保證下拉列表的數(shù)據(jù)渲染上了再選中對應(yīng)的值要怎么保證這個(gè)先后順序
3個(gè)方法:
1拧篮、把a(bǔ)jax請求改成同步方式async:false
2辛慰、內(nèi)嵌回調(diào)方法比如在ajax請求A里面的success方法里再調(diào)ajax請求B
3、用jquery1.8版本之后推出的promise解決入宦,通過then方法將多個(gè)獨(dú)立的ajax請求鏈?zhǔn)讲僮?/p>
方法1的弊端是js是單線程設(shè)置成同步的話就會(huì)阻塞主線程不過可以通過html5的Worker解決(是js里的多線程解決方案使用Worker類加載一個(gè)javascript文件來開辟一個(gè)新的線程,起到互不阻塞執(zhí)行的效果廓俭,并且提供主線程和新線程之間數(shù)據(jù)交換的接口:postMessage云石,onmessage)
這個(gè)同步的意思是當(dāng)JS代碼加載到當(dāng)前AJAX的時(shí)候會(huì)把頁面里所有的代碼停止加載唉工,頁面出現(xiàn)假死狀態(tài)研乒,當(dāng)這個(gè)AJAX執(zhí)行完畢后才會(huì)繼續(xù)運(yùn)行其他代碼頁面假死狀態(tài)解除。而異步則這個(gè)AJAX代碼運(yùn)行中的時(shí)候其他代碼一樣可以運(yùn)行淋硝。
方法2的弊端是請求之間太耦合(相互影響 不具有獨(dú)立性)