在Javascript中,我有两个对数据的异步请求:
$.getJSON('http://foo.com',fooQuery,fooSuccess(data));
$.getJSON('http://bar.com',barQuery,barSuccess(data));
和两个回调来处理收到的数据:
fooSuccess(data) { // Stuff }
barSuccess(data) { // More Stuff }
如何确保仅在fooSuccess完成后执行barSuccess?
笔记:
>我希望保持数据请求的原样:异步和非阻塞(因为服务器响应可能需要一段时间).
>但是,我希望处理数据的回调顺序执行.也就是说,在fooSuccess完成之前,我不想执行barSuccess.
非常感谢你的智慧和帮助!
最佳答案
以下是使用ajax请求返回的jQuery延迟对象的方法.
var fooDfd = $.getJSON('http://foo.com',fooQuery);
var barDfd = $.getJSON('http://bar.com',barQuery);
fooDfd.then(function(fooData){
fooSuccess(fooData);
barDfd.then(barSuccess);
});