怎么解决多个ajax请求返回数据相互依赖的问题?
2017-02-06 本文已影响334人
拥抱变化的Y姑娘
比如我要渲染一个详情页面但是里面有些下拉列表的数据也是动态渲染的那肯定要先保证下拉列表的数据渲染上了再选中对应的值要怎么保证这个先后顺序
3个方法:
1、把ajax请求改成同步方式async:false
2、内嵌回调方法比如在ajax请求A里面的success方法里再调ajax请求B
3、用jquery1.8版本之后推出的promise解决,通过then方法将多个独立的ajax请求链式操作
方法1的弊端是js是单线程设置成同步的话就会阻塞主线程不过可以通过html5的Worker解决(是js里的多线程解决方案使用Worker类加载一个javascript文件来开辟一个新的线程,起到互不阻塞执行的效果,并且提供主线程和新线程之间数据交换的接口:postMessage,onmessage)
这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出现假死状态,当这个AJAX执行完毕后才会继续运行其他代码页面假死状态解除。而异步则这个AJAX代码运行中的时候其他代码一样可以运行。
方法2的弊端是请求之间太耦合(相互影响 不具有独立性)