Jquery - 每个准备就绪时启动功能

时间:2010-09-14 09:23:54

标签: jquery each

我的每个方法都有jquery的问题。

我的对象

first_obj = {};
first_obj[11] = new Array('http://blub.de', 'hsdfe', 'hsdfe' ); 
first_obj[54] = new Array('http://blub.de', 'sdfe', 'hsdfde' ); 
first_obj[99] = new Array('http://blub.de', 'sdf', 'sdfde' ); 

获取结果并将其插入对象“second_obj_results”

    second_obj_results = {};
    $.each(first_obj, function(i, val)
    {       
      var feed = new google.feeds.Feed("http://www.digg.com/rss/index.xml");
      feed.load(function(result) {
        if (!result.error) {
          var container = document.getElementById("feed");
          for (var i = 0; i < result.feed.entries.length; i++)
          {
             second_obj_results[id] = new Array(''+rsd+'', ''+rtitle+'', ''+fege+'' );    // Create new obj with the results
          }
        }
    )};
   read_new_obj();

,这是我的问题

当我说read_new_obj(); ... //不行时

当我说setTimeout('read_new_obj();',2000);时... //它有效

阅读新的obj

function read_new_obj()
{

    $.each(second_obj_results, function(i, val)
    {   


    // do something

    });


}       

我认为问题在于“获取结果”尚未完成。但是Timeout的解决方案非常糟糕。 “获取结果”可能需要超过2秒的时间。

我怎么说,如果“每个first_object”准备就绪 - &gt;启动“read_new_obj”功能?

提前致谢! 彼得

PS:抱歉我的英语不好:(

1 个答案:

答案 0 :(得分:1)

看起来feed.load()将回调函数作为参数。我猜这个回调是在数据到达时被触发的? 如果是这种情况,请将read_new_obj()方法放入该回调中。

feed.load(function(result) {
    if (!result.error) {
      var container = document.getElementById("feed");
      for (var i = 0; i < result.feed.entries.length; i++)
      {
         second_obj_results[id] = new Array(''+rsd+'', ''+rtitle+'', ''+fege+'' );
      }
      read_new_obj();
    }
)};

我不太了解google ajax api,但我非常确定.load()会发布asynchronous request。因此,read_new_obj().load()函数完成之前执行。