Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 处理';互联网不可用';(Angular、Ionic、Cordova应用程序)_Javascript_Angularjs_Cordova_Ionic - Fatal编程技术网

Javascript 处理';互联网不可用';(Angular、Ionic、Cordova应用程序)

Javascript 处理';互联网不可用';(Angular、Ionic、Cordova应用程序),javascript,angularjs,cordova,ionic,Javascript,Angularjs,Cordova,Ionic,我知道以前也有人问过类似的问题。但是,我没有找到令人满意的答案。所以,我发布了这个 我有一个应用程序,它使用RESTAPI调用从服务器提取数据。我有4个主要列表视图/选项卡。下面是一些场景: 互联网是可用的-一切都很好。在视图之间来回导航,并在服务器上获取任何新数据。先前获取的数据是爱奥尼亚提供的缓存视图的一部分。一切都好 互联网断开了。用户立即导航到另一个视图。我无法使用Cordova/Angular提供的离线/在线事件,因为断开连接后需要一段时间才能触发事件。同时,屏幕导航向我的服务器触发了

我知道以前也有人问过类似的问题。但是,我没有找到令人满意的答案。所以,我发布了这个

我有一个应用程序,它使用RESTAPI调用从服务器提取数据。我有4个主要列表视图/选项卡。下面是一些场景:

  • 互联网是可用的-一切都很好。在视图之间来回导航,并在服务器上获取任何新数据。先前获取的数据是爱奥尼亚提供的缓存视图的一部分。一切都好

  • 互联网断开了。用户立即导航到另一个视图。我无法使用Cordova/Angular提供的离线/在线事件,因为断开连接后需要一段时间才能触发事件。同时,屏幕导航向我的服务器触发了一些$http调用(在查看时输入事件),并返回一个错误,因为internet不可用。 我认为将所有$http错误概括为Internet不可用是不明智的(有没有办法发现错误是因为没有Internet?)。这可能是由于服务器端的其他错误造成的。如果发生这种情况,我希望能够导航到一般错误页面

  • Internet已断开连接,用户尝试导航到新视图。如果这个新视图加载了数据,那么只显示以前在internet可用时缓存的数据。如果未加载任何数据,则显示一个弹出窗口,显示“请修复您的互联网”。单击“确定”后,导航回用户所在的视图。我还没有找到实现这一目标的好办法。当然,我可以在每个视图的控制器中处理这一点,但我想创建一个通用服务或使用一个httpinterceptor,它可以为所有视图一次完成所有这一切

  • 关于如何优雅地处理上述所有场景,是否有可靠的解决方案

    对于任何http调用,如果失败,则调用“AnotherApi”,这是一个“非常简单的Api,在服务器端不太可能失败”,如果此“AnotherApi”失败,则不是internet问题,否则您可以显示通用服务器错误页

    要确保此“AnotherApi”正常工作,您可以将其放置在另一个域/另一个物理位置,或者只需调用internet上可用的任何服务

    对于3:

    在我的例子中,我不直接从Api检索数据,在我的所有视图中,检索数据和显示数据是分开处理的。从webservices和/或signar检索数据后,我将数据放入内部阵列、内部存储器、cookie或客户端sqlite中。为了显示数据,我总是从客户端存储中检索数据

    我有一个信号器连接(类似于套接字连接),以确保显示数据可能是自上次成功internet连接可用以来的最新数据,信号器服务器会告诉我服务器中是否有任何新数据。

    对于2:

    对于任何http调用,如果失败,则调用“AnotherApi”,这是一个“非常简单的Api,在服务器端不太可能失败”,如果此“AnotherApi”失败,则不是internet问题,否则您可以显示通用服务器错误页

    要确保此“AnotherApi”正常工作,您可以将其放置在另一个域/另一个物理位置,或者只需调用internet上可用的任何服务

    对于3:

    在我的例子中,我不直接从Api检索数据,在我的所有视图中,检索数据和显示数据是分开处理的。从webservices和/或signar检索数据后,我将数据放入内部阵列、内部存储器、cookie或客户端sqlite中。为了显示数据,我总是从客户端存储中检索数据

    我有一个信号器连接(类似于套接字连接),以确保显示数据可能是自上次成功internet连接可用以来的最新数据,信号器服务器会告诉我服务器中是否有任何新数据。

    对于2:

    对于任何http调用,如果失败,则调用“AnotherApi”,这是一个“非常简单的Api,在服务器端不太可能失败”,如果此“AnotherApi”失败,则不是internet问题,否则您可以显示通用服务器错误页

    要确保此“AnotherApi”正常工作,您可以将其放置在另一个域/另一个物理位置,或者只需调用internet上可用的任何服务

    对于3:

    在我的例子中,我不直接从Api检索数据,在我的所有视图中,检索数据和显示数据是分开处理的。从webservices和/或signar检索数据后,我将数据放入内部阵列、内部存储器、cookie或客户端sqlite中。为了显示数据,我总是从客户端存储中检索数据

    我有一个信号器连接(类似于套接字连接),以确保显示数据可能是自上次成功internet连接可用以来的最新数据,信号器服务器会告诉我服务器中是否有任何新数据。

    对于2:

    对于任何http调用,如果失败,则调用“AnotherApi”,这是一个“非常简单的Api,在服务器端不太可能失败”,如果此“AnotherApi”失败,则不是internet问题,否则您可以显示通用服务器错误页

    要确保此“AnotherApi”正常工作,您可以将其放置在另一个域/另一个物理位置,或者只需调用internet上可用的任何服务

    对于3:

    在我的例子中,我不直接从Api检索数据,在我的所有视图中,检索数据和显示数据是分开处理的。从webservices和/或signar检索数据后,我将数据放入内部阵列、内部存储器、cookie或客户端sqlite中。为了显示数据,我总是从客户端存储中检索数据

    我有一个信号器连接(类似于套接字连接),以确保显示数据可能是自上次成功internet连接可用以来的最新数据,信号器服务器会告诉我服务器中是否有任何新数据