js怎样等多个ajax完成之后再执行另一个函数?

js by Xudong Zhang @ 2016-01-17 17:32:58

比如一个提交的操作,我要先ajax上传多个图片,由于后台一次只处理一个图片,所以只能一个一个的传,然后等这几个痘传完了,我要做一些别的事,该怎么弄?

写惯了各种同步的程序,写js这种异步的好不习惯,总是感觉怪怪的。


可以用一个变量计数,比如:

function multiAjaxs () {
    var remaining = 3                    //设置一个计数器
    $('input').map(function () {
        var data = $(this).val()
        $.get('/ajax/url', {data: data}, function (rev) {
            do_some_thing_here
            --remaining                  //每次ajax完都减1
            if (remaining <= 0) {        //计数完成执行最后想执行的函数
                the_final_function()
            }
        })
    })
}
by Xudong Zhang @2016-01-17 19:16:01.729 +0800 CST


我来回答

Markdown格式技巧

  • 行尾添加2个空格或者添加一个空行就能换行
  • 斜体: *hello* 或者 _world_
  • 加粗: **hello** 或者 __world__
  • 代码块: 添加空行,然后代码缩进4个空格
  • 特殊字符: 用\避免转义;\*就是*本身
  • python: `__name__`可以以代码形式输出__name__
  • 一个简单的例子

切换到移动版