我需要我的服务层来支持在应用程序联机时发出http请求,并在应用程序脱机时保存以后的请求,但这会导致响应是应用程序在线时的承诺,或者是应用离线时同步。我目前有
someService.save(data).then(function(response) {
performSomeAction();
});
但是someService的实现将变为
if (isOnline()) {
return http.post()
} else {
cachePostForLater();
}
从服务返回以尝试隐藏来自控制器层的在线/离线保存的复杂性的最佳方法是什么?
答案 0 :(得分:2)
您的同步函数应返回您手动解析的承诺。这样,调用api服务的代码可以与在线是否进行调用无关。
如果您将$q
作为服务的依赖项,则可以执行
function save(){
if (isOnline()) {
return http.post()
} else {
cachePostForLater();
return $q.resolve(null);
}
}