保证Javascript中的异步请求回调顺序

前端之家收集整理的这篇文章主要介绍了保证Javascript中的异步请求回调顺序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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);
});

猜你在找的jQuery相关文章