怎么解决多个ajax请求返回数据相互依赖的问题?

比如我要渲染一个详情页面但是里面有些下拉列表的数据也是动态渲染的那肯定要先保证下拉列表的数据渲染上了再选中对应的值要怎么保证这个先后顺序


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的弊端是请求之间太耦合(相互影响 不具有独立性)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,786评论 25 709
  • 最近在阅读这本Nicholas C.Zakas(javascript高级程序设计作者)写的最佳实践、性能优化类的书...
    undefinedR阅读 2,185评论 0 30
  • AJAX 原生js操作ajax 1.创建XMLHttpRequest对象 var xhr = new XMLHtt...
    碧玉含香阅读 3,377评论 0 7
  • 年年年,过去了六年快七年。 发发发,剪掉了长发又长发。 你在这里,你还在这里。 你曾经过这里,如今你却在这里。 你...
    不像一只猫的人阅读 148评论 0 0
  • 这两天嘴角严重上火,起了一个特别大的火疖子,起初并不在意,结果慢慢的越来越大,导致现在整个右脸都有一些肿,而...
    艾问才会赢阅读 275评论 0 0