数组未在ajax请求中更新

时间:2014-06-17 15:52:40

标签: javascript jquery ajax underscore.js

所以我试图从多个播客源中排序日期;要做到这一点,我将使用播客链接循环一个数组,并将日期推送到一个新数组并在另一个函数中对数据进行排序。

问题在于,当我注销日期数组时,它总是返回空。

我试图设置一个when / then(完成产生相同的结果)构造,但没有成功。

以下代码:

   _.each(data[1], function(value, key){
    var feed = new google.feeds.Feed(value.links);
    feed.load(function(data) {
      var entries = data.feed.entries;
      _.each(entries, function(value, key){
           that.feedDates.push(value.publishedDate);
      });
    });

当/然后

 $.when(_.each(data[1], function(value, key){
        that.whenAjax(value, key); //a function call to the above
  })).then(function(data){
        //data comes back as the feed links
      that.sortDate(that.feedDates); //date sort function 

 });

谢谢 -art

1 个答案:

答案 0 :(得分:0)

这一直到.when实际上并不知道whenAjax已完成,因为feed.load没有返回承诺。

你可以假装这个并且具有你的功能:

function whenAjax() {
var d = $.Deferred();

_.each(data[1], function(value, key){
    var feed = new google.feeds.Feed(value.links);
    feed.load(function(data) {
      var entries = data.feed.entries;
      _.each(entries, function(value, key){
           that.feedDates.push(value.publishedDate);
      });

      return d.resolve();
    });
}