A possible workaround would be to use an interval that is shorter than your desired refresh of X seconds, but it only actually fires the callback when the appropriate time has elapsed. Certainly more of a hassle, but not all that complicated either.
EDIT: Some sample code
var setiPhoneInterval = function(callback, delay){
var checkInterval = delay / 10; // break down original delay into 10 sub-intervals for checking
var lastFired = new Date();
var fire = function(){
var now = new Date();
if(now.getTime() - lastFired.getTime() > delay ){
lastFired = new Date();
callback();
}
};
var interval = setInterval(fire, checkInterval);
return interval;
};
var myCallback = function(){
console.log('fired!');
};
var foo = setiPhoneInterval(myCallback, 10000);
// and, you can still clearInterval if you'd like
// clearInterval(foo);