我的每个方法都有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:抱歉我的英语不好:(
答案 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()
函数完成之前执行。