我有一个应用程序在首次运行时加载多个资源,这些资源存储在localStorage中。我有一个函数检查是否设置了所有本地存储变量,以便该部分正常工作。
我的工作方法是这样的:
问题在于#5 - 如何检测是否有错误?例如,如果出现连接问题或服务器因任何原因发回了无效数据。这是我当前的代码 - downloadData只执行一个基本的AJAX请求:
// check local storage and download if any missing
if ( !checkLocalStorage() )
{
$('#content').before( '<div class="notice" id="downloading">Downloading data, please wait...</div>' );
for ( var i in db_tables )
{
if ( localStorage[db_tables[i]] == null )
downloadData( db_tables[i] );
}
}
// check progress
var timer = setInterval( function() {
if ( checkLocalStorage() )
{
// everything is downloaded
$('#downloading').hide();
clearInterval(timer);
initApp();
}
}, 500 );
答案 0 :(得分:3)
你可以转一下吗?这样的事情(使用合理的变量名称和“真正的”API)可以简化事情:
ai
。ai.finished(task)
。ai.error(task)
,以防“需要花费太长时间”检查。ai.register(task)
后,初始化应用程序等。ai.finished
,则显示错误消息并开始清理。这样你就不需要ai.error
了,而且各个AJAX任务会在完成或结束时告诉你。您可能仍希望间隔处理花费时间过长的任务,但大多数逻辑将基于通知而不是基于轮询。
答案 1 :(得分:0)
在downloadData
中查看您的实际ajax调用会有所帮助,但我建议您再次查看jquery AJAX API。 Ajax调用的回调不仅仅是整体完成,而是专门针对包括错误在内的成功和失败。如果出现错误,尝试执行重试等操作,如果仍然失败则可以警告用户。您还可以使用这些回调在加载完成时通知您的应用程序,而不是使用间隔计时器。