问题:有A、B、C三个请求,C请求需要A、B请求获取到的数据,如何解决
此前碰到这类问题都是直接改为串行解决,先获取到A然后A的回调调用B,B再调用C。最近发现了解决方法:
-
JQ:
jq1.5版本之后重写了AJAX,并且新增了一个新功能:deferred对象$.when(A(), B()) .done(function(){console.log('done')}) .fail(function(){console.log('fail')})
-
Promise对象:
const promises = [2, 3, 5, 7, 11, 13].map(function (id) { return getJSON('/post/' + id + ".json"); }); Promise.all(promises).then(function (posts) { // ... }).catch(function(reason){ // ... });
promise对象的all方法可以等待所有接口皆resolve之后调用回调函数