AngularJS:存储失败的http请求,稍后再试

时间:2014-11-14 15:22:03

标签: javascript angularjs cordova

我正在寻找一种使用AngularJS存储http请求的优雅方式。 我正在开发一个在Cordova / Phonegap上运行的移动应用程序,我们遇到了问题,网络可能会丢失。

当用户编写评论但无法将其发送到服务器时,应该存储该请求(我认为LocalStorage将是一个好地方),并在服务器再次可用时自动发送。< / p>

我有两个问题: 1.有没有现成的解决方案? 如果没有,你会如何设计这样的东西?

我已经有了一个$ http拦截器,它使用state==0侦听失败的请求,并在请求端{retry: false}设置一个标志:

responseError: function(response) {
  // something went wrong, report to airbrake
  if(response.status==0 && response.config.retry) {
    // don't reject the response, user should see everything is ok
    // somehow here we should store the request, and try it later
    return response;
  }
  return $q.reject(response);
}

我会使用一个服务将请求存储在LocalStorage中,稍后再尝试。但我不确定,这是否是正确的方法,或者我是否想要复杂化。

1 个答案:

答案 0 :(得分:1)

使用本地存储区来保存数据,并使用一些标记指出数据未存储在服务器上。

然后,在另一个进程或由计时器触发或命名时,请按照以下步骤操作:

  • 将数据发送到服务器
  • 工作原理:将数据标记为已保存
  • 它不起作用:稍后再试,显示通知(可选)