0
我已经使用google feed API读取Rss供稿网址并显示标题。当我直接调用函数get_rss1_feeds它工作正常。但是当我用setTimeout或setInterval调用它时,我只能看到空白屏幕,并且页面不会停止加载!Google Feed API的setTimeout问题
<script src="http://www.google.com/jsapi?key=AIzaSyA5m1Nc8ws2BbmPRwKu5gFradvD_hgq6G0" type="text/javascript"></script>
<script type="text/javascript" src="jquery-1.5.2.min.js"></script>
<script type="text/javascript" src="query.mobile-1.0a4.1.min.js"></script>
<script type="text/javascript" src="jsRss.js"></script>
<script type="text/javascript" src="notification.js"></script>
我notification.js
/** global variable **/
var Rsstitle;
/** end global variable **/
document.addEventListener("deviceready", onDeviceReady, false);
// PhoneGap is ready
//
function onDeviceReady() {
// Empty
}
function get_rss1_feeds() {
console.log('test'); // this is being outputted
var Rss1_title = getRss("http://yofreesamples.com/category/free-coupons/feed/?type=rss", function(entry_title) {
if(Rsstitle != entry_title)
Rsstitle = entry_title;
console.log('test1',Rsstitle); // not working
});
}
//get_rss1_feeds() works fine
setTimeout(get_rss1_feeds,5000);
我jsRss.js文件
function getRss(url, callback){
console.log('test2'); // this is being outputted
if(url == null) return false;
google.load("feeds", "1");
// Our callback function, for when a feed is loaded.
function feedLoaded(result) {
if (!result.error) {
var entry = result.feed.entries[0];
var entry_title = entry.title; // need to get this value
callback && callback(entry_title);
}
}
function Load() {
// Create a feed instance that will grab feed.
var feed = new google.feeds.Feed(url);
// Calling load sends the request off. It requires a callback function.
feed.load(feedLoaded);
}
google.setOnLoadCallback(Load);
}
我的console.log()的getRss()函数中,它似乎:
你可以用这个代替它它不在功能内部。我实际上最初的问题是从回调函数获取值。 [链接到我以前的问题](http://stackoverflow.com/questions/6946711/how-to-get-the-value-from-a-callback-function)。这几乎是这个的延续。 –
一旦我每5000毫秒获得一个值,我想确保我不会一次又一次显示相同的标题。只是为了避免重复! –
如果'getRSS()'没有被调用,那么从'get_rss1_feeds()'调用它时必然会遇到某种范围问题。把一个console.log作为'get_rss1_feeds()'的第一行,并确保它被调用。如果你想比较这个标题和以前的标题,那么你需要将这个声明'var Rsstitle;'移动到顶层作用域,以便它可以是一个全局变量,它将从一个调用继续到下一个调用。就像你现在所做的那样,只要get_rss1_feeds()退出,它就是一个局部变量,所以它不会完成任何事情。 – jfriend00