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

    关于javascript - 确保Javascript中的异步请求回调顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14063152/

    10-12 12:53
    查看更多