Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.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 AngularJS:存储失败的http请求,请稍后重试_Javascript_Angularjs_Cordova - Fatal编程技术网

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

Javascript AngularJS:存储失败的http请求,请稍后重试,javascript,angularjs,cordova,Javascript,Angularjs,Cordova,我正在寻找一种优雅的方法来使用AngularJS存储http请求。 我正在开发一个移动应用程序,运行在Cordova/Phonegap上,现在我们遇到了一个问题,网络可能会丢失 当用户写评论但无法将其发送到服务器时,应该存储请求(我认为LocalStorage将是一个好地方),并在服务器再次可用时自动发送 我有两个问题: 1.有什么现成的解决方案吗? 2.如果没有,你将如何设计这样的东西 我已经有了一个$http拦截器,它侦听状态=0的失败请求,并在请求端设置了一个标志{retry:false}

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

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

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

我已经有了一个$http拦截器,它侦听状态=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中,并在以后进行尝试。但我不确定这是正确的方法,还是我正在考虑将其复杂化。

使用本地存储来保存数据,并使用一些标志指示数据未存储在服务器上

然后,在另一个进程上,或由计时器或您命名的计时器触发,请执行以下步骤:

  • 将数据发送到服务器
  • 成功了:将数据标记为已保存
  • 无效:请稍后重试,显示通知(可选)

这似乎是正确的方法。将请求配置存储在localStorage中,并在应用程序加载时逐个发送请求。您可以将其用于存储。好的,谢谢!这也是我想做的事情。也许这样,我可以释放一个鲍尔组件或其他东西;)