使用 angularjs 为多个 HTTP GET 请求获取更清晰的代码
Getting cleaner code for multiple HTTP GET requests with angularjs
我一直在思考使用 angularjs 进行 HTTP GET REST 调用的 3 种方法。它们是 $http、ngResource 和 restangular。我选择 $http 是因为它最简单并且代码可读性最强。但是,我的 REST 调用变得越来越复杂。我需要发出嵌套的 HTTP GET 请求并确保请求的 运行 顺序正确。如果一个请求失败,整个 HTTP GET 请求链将停止。
代码看起来像这样;
$http.get(url_get1).success(function(data, status, headers, config)
{
$http.get(url_get2).success(function(data, status, headers, config)
{
$http.get(url_get3).success(function(data, status, headers, config)
{
//more action
}
}
}
如果 HTTP 请求链变长,代码将变得不可读。
使用 ngResource 或 restangular 会使代码更具可读性和可维护性吗?或者还有其他方法吗?
$http.get()
returns一个承诺。
$http.get(url_get1)
.then($http.get(url_get2))
.then($http.get(url_get3))
阅读有关 promises
另外,检查这个答案:
您的问题不在于获取请求,而在于更好的编码承诺方式。您需要做的是创建更多能够处理传入数据的模块化函数,以及 return 您所需要的。例如:
function dataFromGetA(data){
// modify your first get calls data here to the variable, or url you need for the next call
return $http.get('http://someurl.com/' + data.someKey);
}
function dataFromGetB(data){
return $http.get('http://someotherurl.com/' + data.somethingElse);
}
一旦创建了一组此类函数,就可以轻松地将它们链接起来,如下所示:
$http.get(firstUrl)
.then(dataFromGetA)
.then(dataFromGetB);
请注意,我并没有简单地将 $http
调用链接在一起,因为您提到您需要以前调用的数据来计算下一个调用的 url。
我一直在思考使用 angularjs 进行 HTTP GET REST 调用的 3 种方法。它们是 $http、ngResource 和 restangular。我选择 $http 是因为它最简单并且代码可读性最强。但是,我的 REST 调用变得越来越复杂。我需要发出嵌套的 HTTP GET 请求并确保请求的 运行 顺序正确。如果一个请求失败,整个 HTTP GET 请求链将停止。
代码看起来像这样;
$http.get(url_get1).success(function(data, status, headers, config)
{
$http.get(url_get2).success(function(data, status, headers, config)
{
$http.get(url_get3).success(function(data, status, headers, config)
{
//more action
}
}
}
如果 HTTP 请求链变长,代码将变得不可读。
使用 ngResource 或 restangular 会使代码更具可读性和可维护性吗?或者还有其他方法吗?
$http.get()
returns一个承诺。
$http.get(url_get1)
.then($http.get(url_get2))
.then($http.get(url_get3))
阅读有关 promises
另外,检查这个答案:
您的问题不在于获取请求,而在于更好的编码承诺方式。您需要做的是创建更多能够处理传入数据的模块化函数,以及 return 您所需要的。例如:
function dataFromGetA(data){
// modify your first get calls data here to the variable, or url you need for the next call
return $http.get('http://someurl.com/' + data.someKey);
}
function dataFromGetB(data){
return $http.get('http://someotherurl.com/' + data.somethingElse);
}
一旦创建了一组此类函数,就可以轻松地将它们链接起来,如下所示:
$http.get(firstUrl)
.then(dataFromGetA)
.then(dataFromGetB);
请注意,我并没有简单地将 $http
调用链接在一起,因为您提到您需要以前调用的数据来计算下一个调用的 url。