Jquery延迟 - 完成不等待resolve()

时间:2014-08-22 10:56:57

标签: javascript jquery ajax asynchronous jquery-deferred

我需要做一些异步ajax调用,并且在每一个调用完成后,我将数字推送到一个数组,当所有ajax调用完成后,我用这个数组调用我的回调函数。但无法弄清楚该怎么做..

所以我尝试在我的代码中实现延迟方法,如here

所示

这样结束:

function uploader(uploads, cb) {
  var def     = [];
  var reslist = [];
  $.each(uploads,function(key,value){
    if(!value.sync){
      def.push(_upload(value));
    }
  });
  function _upload(upload){
    var dfd = $.Deferred();
    getAntrag(upload.timestamp, function(json) {
      $.ajax({
        url: 'http://api.***.com/',
        type: "POST",
        data: {
          customer: json
        },
        async: false,
        success: function(msg) {
          try {
            var res = JSON.parse(msg);
          } catch (err) {
            dfd.reject();
          }

          if (res.mldgcode === '0000') {
            reslist.push(res.data.ident);
            dfd.resolve();

          } else {
            dfd.reject();
          }

        }
      });
    });
    return dfd.promise();
  }
  $.when.apply($,def).done(function(){
    console.log('all done');
    cb(reslist);
  });
  $.when.apply($,def).fail(function(args){
    console.log('failargs',args);
    cb(args);
  });
}

所以但现在在我的dfd.resolve()之前调用了done处理程序。

我在这里想念什么?

0 个答案:

没有答案
相关问题