如何设计可以具有同步或异步响应的API

时间:2016-09-27 02:15:46

标签: javascript angularjs asynchronous promise synchronous

我需要我的服务层来支持在应用程序联机时发出http请求,并在应用程序脱机时保存以后的请求,但这会导致响应是应用程序在线时的承诺,或者是应用离线时同步。我目前有

someService.save(data).then(function(response) {
    performSomeAction();
});

但是someService的实现将变为

if (isOnline()) {
    return http.post()
} else {
    cachePostForLater();
}

从服务返回以尝试隐藏来自控制器层的在线/离线保存的复杂性的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

您的同步函数应返回您手动解析的承诺。这样,调用api服务的代码可以与在线是否进行调用无关。 如果您将$q作为服务的依赖项,则可以执行

function save(){
   if (isOnline()) {
    return http.post()
   } else {
    cachePostForLater();
    return $q.resolve(null);
   }
}