如何设计可以有同步或异步响应的API
How to design API that can have either synchronous or asynchronous response
我需要我的服务层支持在应用程序在线时发出 http 请求,并在应用程序离线时保存请求以供稍后使用,但这会导致响应在应用程序在线时成为承诺,或者应用程序离线时同步的东西。我目前有
someService.save(data).then(function(response) {
performSomeAction();
});
但是someService的实现会变成
if (isOnline()) {
return http.post()
} else {
cachePostForLater();
}
从服务中 return 尝试隐藏控制器层在线/离线保存的复杂性的最佳做法是什么?
您的同步函数应该 return 您手动解决的承诺。这样,调用 api 服务的代码就可以不知道调用是否在线进行。
如果您将 $q
作为服务的依赖项,您可以执行
function save(){
if (isOnline()) {
return http.post()
} else {
cachePostForLater();
return $q.resolve(null);
}
}
我需要我的服务层支持在应用程序在线时发出 http 请求,并在应用程序离线时保存请求以供稍后使用,但这会导致响应在应用程序在线时成为承诺,或者应用程序离线时同步的东西。我目前有
someService.save(data).then(function(response) {
performSomeAction();
});
但是someService的实现会变成
if (isOnline()) {
return http.post()
} else {
cachePostForLater();
}
从服务中 return 尝试隐藏控制器层在线/离线保存的复杂性的最佳做法是什么?
您的同步函数应该 return 您手动解决的承诺。这样,调用 api 服务的代码就可以不知道调用是否在线进行。
如果您将 $q
作为服务的依赖项,您可以执行
function save(){
if (isOnline()) {
return http.post()
} else {
cachePostForLater();
return $q.resolve(null);
}
}